[英]PHP change multidimensional array index in running foreach
我试图在运行 foreach 时更改多维数组索引:
$array = array(
array("apple", "orange"),
array("carrot", "potato")
);
$counter = 0;
foreach($array[$counter] as &$item) {
echo $item . " - ";
$counter = 1;
}
我想,该输出将是apple-carrot-potato- ,因为在第一次运行时它从零数组中获取值,然后在接下来的运行中从第一个数组中获取值。
然而,输出是苹果 - 橙色 -
我尝试在变量 $item 之前添加“&”,但我想这不是我要找的。
有什么办法吗?
谢谢
// 好吧,我会尽量让它更干净:
这个 foreach 从 $array[0] 中获取值,但在运行中我想将索引更改为 1,因此在下一次重复中它将从 $array[1] 中获取值
这够清楚了吗?
注意:我不知道我的数组有多少维。
我这样做的目的不是解决这个确切的情况,我需要知道的是是否可以在运行中更改 foreach 循环的源:
我的foreach
$counter = 0;
foreach($array[$counter] as $item) {
echo $item . " - ";
}
现在正在从 $array[0] 获取值。 但是在里面,我想把$counter改成1,所以下次重复的时候,它会从$array[1]中获取值
$counter = 0;
foreach($array[$counter] as $item) {
echo $item . " - ";
$counter = 1;
}
我明白了,这有点难以解释。 这就是 foreach 应该如何工作:
$array 的索引是 $counter
第一次运行
$array[0] -> as $item = 苹果
回声苹果
等待,现在计数器变为 1
第二次运行
$array[1] -> as $item = 胡萝卜
回声胡萝卜
第三次运行
$array[1] -> as $item =土豆
回声土豆
结尾
我真的想尽可能地把它说清楚:D
当 foreach 首次开始执行时,内部数组指针会自动重置为数组的第一个元素。 现在,通过更改计数器,您正在更改数组(内部数组),但它再次设置为第一个数组。
更改两者之间的数组可能会导致意外行为。
来源: Foreach:PHP.net
所以最后,我找到了一个时间,这就是如何在运行循环中更改源数组的索引。
多亏了你,我意识到我不能通过 foreach 来做到这一点,但还有很多其他的循环。
如果您遇到同样的问题,这是我的解决方案:
$array = array(
array("apple", "orange"),
array("carrot", "potato")
);
$counter = 0;
$x = 0;
while($x < count($array[$counter])) {
echo $array[$counter][$x] . " - ";
$x++;
if($counter == 0) {
$x = 0;
$counter = 1;
}
}
输出是:苹果 - 胡萝卜 - 土豆 -正如我想要实现的那样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.