来自数组第二维的$ _POST值

时间:2010-07-01 23:38:04

标签: php post multidimensional-array

使用PHP。我正在尝试从二维$ _POST数组的第二维检索$ _POST值,而实际上并不知道所发布值的名称。这就是我所拥有的;它不起作用。

foreach($_POST as $k=>$v) {

    $$k=$v;

    if (is_array($k) == true) {

        foreach($k as $value) {

            echo $value;
            echo "<br>";

        }

    }

}

我用过

echo '<pre>'; 
print_r($_POST); 
echo '</pre>';

确保数组中有值,并且存在。它显示:

Array
(

    [colors] => Array
        (
            [0] => red
            [1] => yellow
            [2] => blue
            [3] => black
        )

)

这是我的表单复选框的样子:

<input name="colors[]" type="checkbox" value="red" />
<input name="colors[]" type="checkbox" value="yellow" />
<input name="colors[]" type="checkbox" value="blue" />
<input name="colors[]" type="checkbox" value="black" />

如果我不知道数组的名称,如何从数组中的数组中获取值。这个名字并不总是颜色?

3 个答案:

答案 0 :(得分:4)

你快到了。这应该有效:

foreach($_POST as $k=>$v) {

     if (is_array($v) == true) {

        foreach($v as $value) {

           echo htmlspecialchars($value); // Always sanitize when you output! :) 
           echo "<br>";

        }

    }

}

答案 1 :(得分:1)

上述代码不起作用的简单原因是因为您正在检查数组key是否为数组,而不是实际值本身。换掉......

if (is_array($k) == true)

if (is_array($v) == true)

在嵌套的foreach子句中执行相同操作。

它应该可以正常工作。另外,您可以删除布尔比较,is_array返回一个布尔值,您不会使它比现在更明确。

答案 2 :(得分:0)

foreach( $_POST as $key => $item ) {
    if ( is_array($item) ) { // you want to check if the value is an array, not the key
        foreach($item as $index => $value) {
            echo $value . "\n<br>";
        }
    }
}