簡體   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