繁体   English   中英

PHP 在运行 foreach 时更改多维数组索引

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM