2012-07-27 79 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];