【发布时间】:2016-08-31 00:56:45
【问题描述】:
我正在尝试在运行 foreach 时更改多维数组索引:
$array = array(
array("apple", "orange"),
array("carrot", "potato")
);
$counter = 0;
foreach($array[$counter] as &$item) {
echo $item . " - ";
$counter = 1;
}
我想,该输出将是 apple - carrot - potato -,因为在第一次运行时它从零数组中获取值,然后在下一次运行中从第一个数组中获取值.
但是,输出是 apple - orange -
我尝试在变量 $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 = apple
回声苹果
等等,现在计数器变为 1
第二次运行
$array[1] -> 作为 $item = 胡萝卜
回声胡萝卜
第三轮
$array[1] -> as $item = 土豆
回声土豆
结束
我真的想尽可能地说清楚:D
【问题讨论】:
-
很不清楚你想在这里实现什么。
-
foreach 循环获取变量 $array[0] 并对其进行处理
-
你想要
apple-carrot-potato还是apple-orrange-carrot-potato? -
但是现在你想要第一个数组的第一个元素和第二个数组的第一个元素?
echo $array[0][0] . " - " . implode(" - ", $array[1]);example -
foreach获取数组作为值。正如 Shady 所写,您无法更改foreach的迭代索引,因为指向它的指针仍指向先前的结果。这样做不会改变指针并继续原样。您需要使用 for 或 while 循环,根据您的情况可能会使用递归。
标签: php arrays multidimensional-array indexing foreach