2012-07-27 105 views
-1

有什麼方法通過索引訪問POST數據,而不是通過密鑰訪問POST數據?我想下面的代碼工作:通過索引訪問POST數據

for($x = 0; $x < count($_POST); $x++) 
    echo $x . ": " . $_POST[$x]; 

(是的,我知道在循環count是壞的,只是用它爲簡單起見)

的問題是,顯然我無法訪問通過索引$ _POST變量,它必須通過鍵來訪問。我不能使用鍵的原因是因爲我將要有可變形式的數據,所以在POST中可能會更多或更少,所以我需要能夠通過可變數量的鍵來循環變量名稱。

任何幫助表示讚賞!

編輯:澄清,我很困惑,因爲我以前認爲PHP數組行爲幾乎像C++枚舉。

+0

爲什麼不嘗試一下,看看?此外,你總是可以使用foreach() – vascowhite 2012-07-27 11:33:27

+0

是的,我想我的印象是PHP數組像C++枚舉,猜測我錯了。 – Ecksters 2012-07-27 11:38:06

回答

0

使用foreach()代替它,它也適用於數值數組。

foreach ($_POST as $key=>$val) 
    echo sprintf("%s: %s\n", $key, $val); 
+0

所有的答案都是可靠的,因爲這是一個簡單的問題(我的錯誤),但是這個代碼是我需要立即向前移動的 – Ecksters 2012-07-27 11:49:54

3

有沒有辦法通過索引訪問POST數據,而不是通過鍵訪問它?

不,它沒有數字索引。

我不能使用鍵的原因是因爲我要具有可變表單數據,所以可以有更多或更少的POST,所以我需要能夠遍歷可變數目鍵,變量名稱。

您可以通過關聯數組進行循環。請參閱foreach的文檔。

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

爲什麼不直接使用foreach

foreach ($_POST as $key => $value) { 
} 

0
foreach($_POST as $key=>$value) { 
    echo $key. ":" .$value; 
} 
0

索引和鍵是相同的東西。密鑰可以是數字(例如$_POST[0]),也可以是字符串(例如$_POST['foo'])。它不能兼而有之。您不能通過$_POST[0]訪問$_POST['foo']

+0

$ _POST可能在兩者之間被改變。在這種情況下,數字鍵不會重新排序。所以他們可能會包含差距。 – arkascha 2012-07-27 12:00:03

+0

@arkascha是的,還有......? – deceze 2012-07-27 13:00:47

+0

對不起,我確實想念你的答案。我的錯。 – arkascha 2012-07-27 13:12:16

0

技術上是可行的,但foreach優越:

$postVals = array_value($_POST); 
$postCount = count($_POST); 
for($x = 0; $x < $postCount; $x++) 
    echo $x . ": " . $postVals[$x];