В PHP при передачи переменной функции, мы работаем с этой переменной, но если мы решим ее исправить то она будет откопирована, т.е. Copy-On-Write, COW, собственно вопрос, а вот в таком случае, тоже будет COW: Код (PHP): $a = 'hello'; $b = $a; // тут произойдет копирование? или когда мы попытаемся изменить $b?
длинный ответ: строка 1: инициализация переменной записать в ячейку1 памяти строку хэллоу присвоить указатель1 на эту ячейку1 переменной с именем а строка 2: копирование переменной (присвоить переменной б значение переменной а) читаем указатель1 переменной а создаем ячейку2 памяти записываем в ячейку2 памяти значение ячейки1 [на которую ссылается указатель1 переменной а] присваиваем указатель2 переменной с именем б короткий ответ: тут
ты неправ. CoW как раз в том и заключается, что новая память под строку ,в данный момент, выделена не будет. php только инкрементирует счетчик ссылок refcount в zval контейнере. $b будет ссылаться на те же данные. Добавлено спустя 1 минуту 17 секунд: даже в мануале есть об этом
ну прям век живи век учись. всю жизнь рассказываю про передачу по ссылке и передачу значения а тут оказывается нихера не так. уйду я от вас...