【发布时间】:2011-07-07 20:39:58
【问题描述】:
function heaviside(&$value, $key, &$array)
{
if($key > 0)
$value = $array[$key-1].$array[$key];
}
function test_heaviside()
{
for($i=0; $i<10; $i++)
{
$array[$i] = $i;
}
array_walk($array, 'heaviside', &$array);
print_r($array);
}
test_heaviside();
我的问题是上面的代码会产生这个警告:
PHP 警告:调用时间 引用传递已被弃用 - 按值传递的参数;如果您想通过引用传递它, 修改声明 数组步行()。如果你想 启用调用时传递引用, 你可以设置 allow_call_time_pass_reference 为 true 在您的 INI 文件中。然而,未来 版本可能不支持这个 更长。
如果我在对 array_walk 的调用中删除 &$array 中的 &,此函数将不会返回此正确结果。在第一种情况下,它在哪里起作用,它返回这个结果:
[0] => 0 [1] => 01 [2] => 012 [3] => 0123 [4] => 01234 [5] => 012345 [6] => 0123456 [7] => 01234567 [8] => 012345678 [9] => 0123456789
而如果我删除 & 它返回:
[0] => 0 [1] => 01 [2] => 12 [3] => 23 [4] => 34 [5] => 45 [6] => 56 [7] => 67 [8] => 78 [9] => 89
我需要帮助来理解这一点,或者只是为了找到除更改 .ini 之外的解决方案。
【问题讨论】:
标签: php