【发布时间】:2012-11-20 07:23:54
【问题描述】:
看看这个:
<?php
$array = array('a' => '…', 'b' => '…', 'c' => '…', 'd' => '…', 'e' => '…', 'f' => '…');
foreach ($array as $key => $val){
echo "current key: $key, next key: ".key(($array))."<br>";
}
?>
输出:
current key: a, next key: b
current key: b, next key: c
current key: c, next key: d
current key: d, next key: e
current key: e, next key: f
current key: f, next key: a
我正在寻找一个函数来获取 foreach 循环中关联数组的下一个键。我试了一下,突然它起作用了。 (如您在我的示例中所见)。
但是为什么这会起作用?是否有意义? ……对我来说不是! 你能给我解释一下吗?
这是因为 key(($array)) 部分,但为什么呢?我的意思是.. 这是一个错误.. 我想写 key($array) 但我忘了删除 2 个包装括号。
所以这是巧合!!!
为什么会这样?我的意思是,这很好,但是……????
【问题讨论】:
-
有趣。如果您打开错误报告,您会看到很多错误。额外的括号破坏了直接变量引用。
$a是一个变量,($a)是导致$a的值 的表达式。key需要一个通过引用传递的变量。不知道key究竟做了什么,以及为什么它的行为方式如此,但我会将其归档为错误的、未定义的行为。 -
哇,如果这是预期的行为真棒。有很多次我可以使用这样的东西。
-
但是你有什么建议?我应该保持这种状态吗?
-
绝对没有。 PHP 版本的行为甚至不一致,你不能依赖这个:3v4l.org/5RjfA
-
好的。这是一个很好的。谢谢。