为什么array_walk()的结果如此疯狂?

时间:2014-10-09 18:29:54

标签: php arrays function

为什么以下代码返回数组值的第二个字符?

$name = array("John","Frank","Peter");
function myFunction($name) {
echo $name[1];
}
array_walk($name,"myFunction"); //output ore

1 个答案:

答案 0 :(得分:3)

array_walk()$name数组的每个值传递给您的回调myFunction()。 (回调中的变量$name 与您传递给$name的变量array_walk()$name数组是({在这种情况下假设)全局范围,而回调中的$ name`仅在该函数内的范围内)。然后,您将显式地回显出该变量字符串值的第二个字符。

来自the manual

  

可以通过使用方形数组括号在字符串后面指定所需字符的从零开始的偏移来访问和修改字符串中的字符,如$ str [42]。将字符串视为用于此目的的字符数组。

// First iteration
John
 ^

// Second iteration
Frank
 ^

// Third iteration
Peter
 ^