我想知道爲什麼,我有一個查詢字符串頁面上, 代碼:PHP關聯數組中的項不能被數字訪問(即通過索引)嗎?
echo "Item count = " . count($_GET);
echo "First item = " . $_GET[0];
結果:
項目數= 3 第一項=
PHP關聯數組不同於數字數組,所以他們的項目不能被索引訪問?謝謝,
我想知道爲什麼,我有一個查詢字符串頁面上, 代碼:PHP關聯數組中的項不能被數字訪問(即通過索引)嗎?
echo "Item count = " . count($_GET);
echo "First item = " . $_GET[0];
結果:
項目數= 3 第一項=
PHP關聯數組不同於數字數組,所以他們的項目不能被索引訪問?謝謝,
他們不能。當你通過鍵/索引爲一個值下標時,它必須完全匹配。
如果您確實想使用數字鍵,您可以在$_GET
上使用array_values()
,但是您將失去有關鍵的所有信息。您也可以使用array_keys()
來獲取帶有數字索引的密鑰。
或者,如Phil提到,你可以用reset()
的內部指針來獲取第一個。你也可以用end()
得到最後一個。你也可以用array_pop()
和array_shift()
來彈出或移動,兩者都會在數組修改後返回值。
是的,數組元素的鍵是一個整數(不能以0開頭)或一個關聯鍵,而不是兩個。
您可以用這樣的循環訪問項目:
foreach ($_GET as $key => $value) {
}
或者獲取值作爲一個數值數組開始鍵0與array_values()
功能或reset()
獲得的第一個值。
不是,這是不可能的。如果你想在0訪問元素,嘗試file.php?0=foobar
<?php
print_r($_GET);
?>
你得到
Array
(
[foo] => bar
)
:
試試這個:
file.php?foo=bar
file.php
內容。
你也可以使用一個foreach
或for
環和第一個元素後,簡單地取消(或任何元素你碰巧要達到):
foreach($_GET as $value){
echo($value);
break;
}
都能跟得上 - 它們是由鍵值對映射。您可以遍歷他們KV對添加到索引數組,但:
foreach($_GET as $key => $value) {
$getArray[] = $value;
}
您可以通過索引$內的getArray現在訪問的值。
你可以這樣來做:
$keys = array_keys($_GET);
echo "First item = " . $_GET[$keys[0]];
作爲另一個奇怪的解決方法,您可以使用訪問第一個元素:
print $_GET[key($_GET)];
這是利用了內部數組指針,如復位/結束/ current()在each()
循環中可能會有用。
依靠'$ _GET'如何排序通常不是一個好主意。 – BoltClock 2011-05-08 23:47:35