【发布时间】:2025-12-20 17:40:06
【问题描述】:
有没有办法让这段代码在没有警告的情况下工作?
function myFunction($value, $key, &$array)
{
if (strlen($value)<=2) $array[] = $key.$value;
}
$a = array("aa", "bbb", "cc", "dd");
$resultA = array();
array_walk($a, 'myFunction', &$resultA);
// now '$resultA' should contain: Array([0] => aa0 [1] => cc2 [2] => dd3)
它有效,但它总是抛出这个警告消息:
警告:调用时传递引用 已被弃用 path_to\index.php 在第 7 行
我认为从调用中删除与号应该足以使警告消失,但奇怪的是,如果我只在“myFunction”中指定 &,“array_walk”不会计算第三个参数。 要使其正常工作,调用中也必须有一个 &,但它会触发警告。
此外,作为临时解决方法,我尝试将 php.ini var "allow_call_time_pass_reference" 设置为 true,但我仍然收到警告...
我想知道可能有更好/首选的方法来将用户定义的函数应用于数组的每个元素,并带有一个通过引用传递的参数。
【问题讨论】:
-
告诉我php版本。
-
@Guarav 5.3 会抛出已弃用的错误,而不是警告,可能是 5.2
-
您好,它是在 IIS7 下运行的 5.2 版。 @Andy 猜对了:)
标签: php