gpt4 book ai didi

php - 是否有任何特殊规则使用 foreach 和 while 循环(使用 each() 函数)在 php 中迭代数组?

转载 作者:可可西里 更新时间:2023-10-31 22:10:27 24 4
gpt4 key购买 nike

我是 PHP 新手。我的问题是,当我使用以下脚本时:

$arr1 = array('fname' => 'niraj','lname' => 'kaushal','city' => 'lucknow');

while(list($key, $value) = each($arr1)){

echo "$key has $value value <br>";

}

foreach($arr1 as $key => $value){

echo "$key:$value <br>";

}

输出

fname has niraj value 
lname has kaushal value
city has lucknow value
fname:niraj
lname:kaushal
city:lucknow

但是当我如下更改 foreach 和 while 循环的顺序时

$arr1 = array('fname' => 'niraj','lname' => 'kaushal','city' => 'lucknow');

foreach($arr1 as $key => $value){

echo "$key:$value <br>";

}

while(list($key, $value) = each($arr1)){

echo "$key has $value value <br>";

}

输出结果如下

fname:niraj 
lname:kaushal
city:lucknow

为什么第二个脚本不显示 while 循环的输出。背后的原因是什么。

最佳答案

这是因为 each() 只返回当前的键/值,然后递增内部计数器(你当前在数组中的位置)。它不会重置它。

第一个循环 (foreach) 将内部计数器设置为数组的末尾,因此第二个循环认为它已经完成,因此什么都不做。

在使用 each() 开始循环之前,您需要在数组上调用 reset():

reset($arr1);
while (list($key, $value) = each($arr1)){
echo "$key has $value value <br>";
}

关于php - 是否有任何特殊规则使用 foreach 和 while 循环(使用 each() 函数)在 php 中迭代数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32902688/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com