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



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

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

array_walk()$name数组的每个值传递给回调myFunction()。(回调中的变量$name,而不是传递给array_walk()的相同变量$name$name数组(在本例中假设)在作用域中是全局的,而回调中的$name`仅在该函数的作用域中)。然后显式地回显该变量字符串值的第二个字符。

来自手册:

字符串中的字符可以通过使用方括号指定字符串后所需字符的从零开始的偏移量来访问和修改,如$str[42]中所示。为此,可以将字符串想象成一个字符数组。

// First iteration
John
 ^
// Second iteration
Frank
 ^
// Third iteration
Peter
 ^

最新更新