2014-05-08 29 views
2

數組元素的關鍵是什麼我想知道是否所有的PHP數組都必須有key s的value s?我不認爲他們這麼做,所以我的下一個問題是,每個valuekey是否自動成爲它在陣列中的位置(基於0的索引),否則value本身將成爲key如果我沒有指定

也許這個值根本沒有一個鍵...好奇,因爲如果它沒有一個鍵,我不能從一個foreach循環內的數組中刪除一個元素。

回答

3

我不知道是否所有的PHP數組必須有他們的價值觀鑰匙?

是的,他們這樣做。

是否針對每個值的鍵自動成爲它的陣列中(基於0的索引)

是位置。如果您沒有明確指定鍵值,則會使用相應的位置(基於0的索引)。

我無法從foreach循環中的數組中刪除元素,如果它沒有鍵的話。

你並不總是需要一個鍵來操作數組。此外,foreach構造允許您使用陣列中的鍵:foreach ($iterable as $key => $value)

+0

謝謝沒有足夠的聲望投票了......對不起 – BestAnswer

+0

@edit這就是我在我的代碼中...'foreach($ iterable as $ key => $ value)'' – BestAnswer

4

我想知道如果所有的PHP數組都必須有他們的值的鍵?

是的。從documentation

陣列

PHP中的數組實際上是一個有序圖。地圖是一種將值與鍵關聯的類型。

因此,數組的所有元素都必須有一個鍵。

確實爲每個值的鍵自動成爲它的陣列中(基於0的索引)

幾乎正確的位置。如果沒有爲元素指定鍵,那麼鍵將是1 +上一個元素的鍵,其中第一個元素的鍵是0.

我無法從數組中刪除元素一個foreach循環,如果它沒有一個鍵。

實際上存在foreach語法,該值除了顯示值外還顯示了鍵。從documentation

foreach構造提供了一種簡單的方法來迭代數組。 foreach僅適用於數組和對象,並且當您嘗試在具有不同數據類型或未初始化變量的變量上使用它時會發出錯誤。有兩種語法:

foreach (array_expression as $value) 
    statement 
foreach (array_expression as $key => $value) 
    statement 

使用後者foreach語法用於刪除數組元素的一個例子是如下:

// Remove elements from the array that are less than 10 
foreach ($array as $key => $value) { 
    if ($value < 10) { 
     unset($array[$key]); 
    } 
} 
+0

感謝您的額外信息。我只是不確定'$ key => $ value'腳本是否可以工作,因爲我從來沒有指定'key'。 – BestAnswer

+0

有趣的是,如果未指定密鑰,則不會爲其分配密鑰_根據其位置_而是將其添加到最後一個密鑰。 – BestAnswer

相關問題