gpt4 book ai didi

php - 更改 foreach 循环内的初始数组?

转载 作者:IT王子 更新时间:2023-10-29 01:11:50 25 4
gpt4 key购买 nike

我想要一个 foreach 循环,其中初始数组在循环内被更改。

例如。

$array = array('red', 'blue');
foreach($array as $key => $value) {
$array[] = 'white';
echo $value . '<br />';
}

在这个循环中,尽管我在循环中添加了另一个元素,但循环将打印出红色和蓝色。

有什么方法可以改变循环内的初始数组,以便添加新元素,并且无论发生什么变化,foreach 都会使用新数组?

我需要这种逻辑来完成特定任务:

我将有一个搜索链接的 if 语句。如果该链接存在,则将其添加到数组中。如果链接内容包含另一个链接,则将获取链接内容以进行检查。如果是,则添加此链接,并获取内容,依此类推。当没有进一步建立链接时,foreach 循环将退出

最佳答案

我不认为这对于 foreach 循环是可能的,至少你写的方式是这样:似乎不仅仅是 foreach 的工作方式;引用 the manual page of foreach :

Note: Unless the array is referenced, foreach operates on a copy of the specified array and not the array itself.


编辑:稍微考虑一下那个注释后,实际上是可能的,这是解决方案:

注释说“除非数组被引用”;这意味着这部分代码应该可以工作:

$i = 0;
$array = array('red', 'blue');
foreach($array as $key => & $value) {
$array[] = 'white';
echo $value . '<br />';
if ($i++ >= 5) {
break; // security measure to ensure non-endless loop
}
}

注意 $value 之前的 &

它实际上显示:

red
blue
white
white
white
white

这意味着添加 & 实际上是您正在寻找的解决方案,从 foreach 循环内部修改数组;-)


编辑:这是我在考虑该注释之前提出的解决方案:

您可以使用 while 循环来做到这一点,“手动”做更多的工作;例如:

$i = 0;

$array = array('red', 'blue');

$value = reset($array);
while ($value) {
$array[] = 'white';
echo $value . '<br />';
if ($i++ >= 5) {
break; // security measure to ensure non-endless loop
}
$value = next($array);
}

将为您提供以下输出:

red
blue
white
white
white
white

关于php - 更改 foreach 循环内的初始数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2348077/

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