Joh*_*ith 6 php arrays behavior next
看这个:
<?php
$array = array('a' => '…', 'b' => '…', 'c' => '…', 'd' => '…', 'e' => '…', 'f' => '…');
foreach ($array as $key => $val){
echo "current key: $key, next key: ".key(($array))."<br>";
}
?>
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
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
Run Code Online (Sandbox Code Playgroud)
我正在寻找一个函数来获取foreach循环中关联数组的下一个键.我尝试了一下,突然间它起了作用.(正如你在我的例子中看到的那样).
但为什么这个工作?是否有意义?......不是我!你能解释一下吗?
这是因为key(($array))部分但为什么?我的意思是..这是一个错误..我想写,key($array)但我忘了删除2个包装括号.所以这是巧合!!!
为什么它会这样?我的意思是,这很好但是...... ????
根据key的 PHP 手册,key() 返回当前数组位置的索引元素。
问题不在于key,甚至对于双括号。Key 通过引用接收数组,因此双括号没有多大作用。
该行为来自foreach。当foreach迭代数组时,不同版本的 PHP 在设置数组的内部current指针时会有不同的行为,这就是key()、next()、current()等在调用它们时所查看的内容。
PHP 中的数组与大多数语言中的数组不同。它们实际上是对象(尤其是关联数组)。把它们想象成链表(它们不是链表,只是为了说明目的而跟我一起)——当你迭代时,你需要知道你当前在哪里以及你下一步将在哪里。
这里显然发生的事情是,无论您运行的 PHP 版本如何,在代码中设置和变量之后,立即foreach将内部current指针设置为for 循环开头的元素next。$key$value
我绝对不会依赖这种行为,因为 PHP 的后续更新可能会破坏此代码。这只是这个特定版本的一个有趣的巧合。如果您想要下一个键,请考虑更换foreach循环。关于next()的 PHP 手册有很好的示例,并且一定要查看“另请参阅”部分中的prev()、each()和其他函数。
| 归档时间: |
|
| 查看次数: |
999 次 |
| 最近记录: |