Передача параметра массива в функцию поддерживать текущий указатель в PHP5.5?

Я учусь на ZCPE и в StudyGuide есть следующая цитата:

passing an array in as a function argument, unless you
pass-by-reference using the & operator, a copy is passed and the internal pointer is
always set to the first position, making a call to reset() unnecessary

Итак, я сделал тест:

function test($arr) {
echo current($arr);
}

$arr = array('a','b','c');

next($arr); next($arr);

test($arr);

Выход в test() функция c, это означает, что аргумент массива был отправлен как копия, но с внутренним указателем, клонированным в той же позиции, что и массив из глобального пространства.

Документация для PHP5.3, но я не могу найти такое изменение в PHP Manual,

Возможно, это ошибка, но я не уверен, потому что я не нашел в руководстве информации о том, как указатель поддерживается при передаче аргумента массива в функцию.

Любая информация по этому вопросу будет оценена.

0

Решение

Вы можете передать параметр по ссылке или по копии, например:
Пример 1

function fn($a) {
// some job
}

$a = 5;
fn(&$a); // i choose to pass variable a by referance, instead of my declaration

Пример 2

function fn(&$a) {
// some job
}
fn($a); // will be passed by referance, whatever i do ...
fb(&$a) ; // also by referance : WARNING this has been removed from the new version of PHP !

в официальной документации в php упоминается, что параметр next() будет автоматически передан по ссылке:

mixed next ( array &$array )

Так что это не ошибка 🙂
Надеюсь, это поможет

0

Другие решения

Других решений пока нет …