Нет, проблема в том, что первым параметром функции является передача по ссылке (то есть функция может изменять аргумент в области действия вызывающего). Следовательно, вы должны передать переменную или что-то, что можно назначить в качестве первого аргумента. Когда вы создаете массив, например array($a)
, он просто копирует значение переменной $a
(равное 0) в слот в массиве. Он никак не ссылается на переменную $a
. И затем, когда вы вызываете функцию, это как если бы вы это делали, что не работает:
test(0)
Если вы действительно хотите, вы можете поместить $a
в массив по ссылке, но это довольно сложно:
<?php
$a = 0;
$args = array(&$a);
function test(&$a) {
$a++;
}
call_user_func_array('test', $args);
?>
Что касается того, как вы скажете, что элемент массива является ссылкой ... это сложно. Вы можете сделать var_dump()
для массива и найти символ "&":
> var_dump($args);
array(1) {
[0]=>
&int(1)
}