【问题标题】:Why are the results of array_walk() function so crazy? [closed]为什么 array_walk() 函数的结果如此疯狂? [关闭]
【发布时间】:2014-10-09 18:29:53
【问题描述】:

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

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

【问题讨论】:

  • 您期待什么?为什么?还有为什么要怪array_walk
  • 你认为它为什么会这样?你期望它做什么?

标签: php arrays function


【解决方案1】:

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

来自the manual

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

// First iteration
John
 ^

// Second iteration
Frank
 ^

// Third iteration
Peter
 ^

【讨论】:

  • 您可能想解释一下变量$name 的范围。这可能会引起混乱。
  • @KlausByskovPedersen 好主意。完成。
  • 感谢约翰的全面解释
猜你喜欢
  • 1970-01-01
  • 2022-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-12
  • 2017-03-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多