Змінні в PHP можуть передаватися як за значенням, так і за посиланням. Це залежить від типу даних змінної та способу її передачі в функцію.
Передача за значенням:
Прості типи даних:
Цілі числа (int)
Дійсні числа (float)
Рядки (string)
Булеві значення (bool)
Створені копії:
При передачі змінних цих типів в функцію створюються копії їх значень.
Зміни, внесені в копії всередині функції, не впливають на оригінальні змінні.
Передача за посиланням:
Складні типи даних:
Масиви (array)
Об'єкти (object)
Посилання на оригінал:
При передачі змінних цих типів в функцію передається не копія, а посилання на оригінальну змінну.
Зміни, внесені в змінну всередині функції, також змінюють значення оригінальної змінної.
Як визначити, за яким принципом передається змінна:
Символ амперсанда (&):
Перед назвою змінної в параметрі функції: передача за посиланням.
Приклад: function `foo(&$bar) { ... }`
Відсутність символу &:
Передача за значенням.
Приклад: function `foo($bar) { ... }`