array pop() требует устаревшего вызова по ссылке при вызове из функции пользователя вызова()


call_user_func('array_pop', $myarray);

Дает 'Параметр 1 для array_pop (), ожидаемый как ссылка, значение дано', в то время как

call_user_func('array_pop', &$myarray);

Дает время вызова передача по ссылке является устаревшим'.

Так что же мне делать? Я нахожусь на "PHP версии 5.3.5" на Windows, и включение устаревших предупреждений не является вариантом.

Спасибо!

1 5

1 ответ:

Либо просто назовите его напрямую:

array_pop($myarray);

Или использовать call_user_func_array(), который принимает массив ссылок в качестве параметров, не крича на вас о времени вызова pass-by-reference:

call_user_func_array('array_pop', array(&$myarray));

Причина, по которой это не вызывает предупреждения о передаче времени вызова, заключается в том, что ничего подобного на самом деле не происходит. Существует тонкая разница между передачей переменной по ссылке и созданием массива ссылок и передачей этого массива по значению.