2012-06-28 37 views
0

我一直在閱讀PHP的絕對初學者。這本書讓我習慣了一些東西,但它並沒有真正解釋這些東西的工作原理和原因。爲什麼它工作? PHP foreach多維數組

任何人都可以推薦一本書/課程,不僅會告訴我如何,但爲什麼?

敵人例如:

$people = array(
    'Jason' => array('gender'=> 'male', 'hair'=> 'brown'), 
    'carly' => array('gender'=> 'female', 'hair'=>'blonde'), 
); 
foreach ($people as $name => $person){ 
    foreach($person as $key => $value){ 
     echo "$name's $key is $value. <br />"; 
    } 
} 

// Output: 
// Jason's gender is male. 
// Jason's hair is brown. 
// carly's gender is female. 
// carly's hair is blonde. 

爲什麼我用$key$value?他們在做什麼? $person從哪裏來的?我能說出我想要的其他東西嗎?

+0

我將代碼重新格式化了一下,使其更易於查看。 '=>'左邊的項是鍵,右邊的項是值 - 在嵌套數組的所有級別都是true。所以一個值可以是一個數組,也可以是一個字符串/數字值。 – halfer

回答

3

只需快速瀏覽documentation on foreach即可回答此問題。

第一個foreach正在循環遍歷$people數組的所有元素。陣列的每個鍵是$name,值(第二級陣列)是$person

然後在第二個循環中,每個人的屬性,屬性的類型是$key,該屬性的值是$value

請仔細閱讀我剛剛給出的手動鏈接,這說明它遠比我好!

0

就書/課程而言,我使用的最好的東西是自我教學和網絡資源。 php.net有一切的文檔,這種方法已經足夠讓我通過各種專業設置。當然,這包括髮布在stackoverflow上的東西。我從來沒有必要買書或參加課程。這些東西當然可以幫助,但我不知道有什麼特別的魔術彈頭解決方案。

在你的例子中,PHP並不要求在foreach循環中使用的變量先在別處聲明。在你的例子中,foreach循環中的第一個變量people是要循環的數組。然後你得到關鍵字as,然後在循環中爲數組中的每個條目使用變量。如果你願意,你可以將該變量指定爲key => value而不僅僅是value

閱讀PHP文檔。當你不明白的時候提問。

0

關鍵是'Jason'部分,值是你放入它的數組。另外,在Value數組中,您分別具有$ key和$ value,分別爲'gender'和'male'。

Foreach循環允許您首先訪問每個父級別數組,作爲'Jason','Carly'部分,讓您訪問這些鍵中的每個值。在這種情況下,你將另一個數組傳遞給它,所以嵌套的foreach循環將爲每個值賦值$ key => $ value。

就閱讀而言,搜索谷歌'多維數組教程PHP',你會發現許多資源來閱讀。這就是我對M-D陣列的更多瞭解。

祝你好運,我希望這有助於!

+0

謝謝,我會尋找教程。 – Ismaiah

+0

請確保你註冊了你認爲有幫助的帖子,並且如果你發現它是對你的問題的最好(正確)答案,那麼一定要將答案標記爲正確,以便其他人可以輕鬆找到答案。 – Cody

0

從後到前開始:

難道我已經命名的什麼我想?

是你可以有,同爲$key$value

從何從$的人嗎?

$person$people來了,解釋如下:

$people as $name => $person 

這基本上是說利用$people當前記錄和存儲密鑰(傑森在第一條記錄)的可變$name

並將其值(array('gender'=> 'male', 'hair'=> 'brown')第一行)存儲爲$person

爲什麼我使用$ key和$ value?他們在做什麼?

$key$value可以,只要它是一個有效的變量名,而第二foreach循環的作用相同,第一,但不是「傑森」的是關鍵,「性別」和「取名頭髮「是鍵,存儲在$key和它們的值‘男’和‘棕色’被分別存儲在$value

即記錄1的$person是‘傑森’,的$person第一$key(‘傑森’)的」性別',該密鑰的值是'男',即$value

+0

謝謝。燈泡。這做到了! – Ismaiah