簡體   English   中英

PHP通過關聯數組進行迭代

[英]PHP Iterating Through Associative Array

所以我有以下工作代碼:

$arrayitertest=Array("Fruit"=>Array("Pear","Peach","Apple","Banana"),"Cars"=>Array("My budget","other cars."));

foreach ($arrayitertest as $key=>$value)
foreach($arrayitertest[$key] as $result) echo $key.":". $result."|";

但是,當我將foreach ($arrayitertest as $key => $value)更改為foreach ($arrayitertest as $key)它將引發致命錯誤(盡管我從未使用$ key變量。)

錯誤是:為infor中的foreach()提供了無效的參數

有人能告訴我為什么會這樣嗎?

編輯:哇,謝謝你的所有答案。...到目前為止,我將接受最具體的答案。

就您的錯誤而言:如果從第一個foreach刪除$value ,則$key成為該值,而$arrayitertest[$key]成為"pear" ,這對於第二個foreach是無效的參數。

您的程序將暫停:

// this is not going to work
foreach ("pear" as $result)

如果您不需要第一個foreach的密鑰,則可以將其更改為:

foreach ($arrayitertest as $value)
{
   foreach($value as $result)
   {
   }
}

我認為您誤解了鍵和值的順序。 在說$value => $key的地方,從技術上講,它是$key => $value

解析數組的方法是這樣的:

foreach ($array as $key => $value) {
    foreach ($array[$key] as $v) {
        // $v = Pear (1st iteration), Peach (2nd), Apple (3rd) ... (for key = Fruit) 
        // $v = My Budget (1st iteration), other cars. (2nd) (for key = Cars)
        // notice that $key is also accessible here
    }
}

顯然,如果您不需要$key ,也可以簡單地執行以下操作:

foreach ($array as $a)
    foreach ($a as $v)
        // use $v here 

編碼$ value => $ key,將Fruit,Car,...放入$ value。

僅對$ value進行編碼會將諸如Array(“ Pear”,“ Peach”,“ Apple”,“ Banana”)之類的數組放入$ value中,這不是數組的有效索引。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM