PHP中奇怪的is_array()行为

时间:2015-01-21 14:00:58

标签: php arrays

我有几个字段的表单我想将这些值存储在会话变量中。如果用户未填写,则其中一些字段应为0。

提交表单后的print_r($ _ POST)显示:

[report] => Array
        (
            [a_name] => Array
                (
                    [0] => 
                )

            [a_id_card] => Array
                (
                    [0] => 
                )
            [a_total] =>

然而,在运行以下PHP代码之后,似乎“a_name”和“a_id_card”不会被解释为数组。任何想法为什么?

if (isset($_POST['submit'])) {   
    foreach ($_POST as $key => $value) {             
        if (!is_array($key) && trim($value) == '')  {
            $value = 0; 
            $_SESSION['report'][$key] = $value;        
        } else {
            $_SESSION['report'][$key] = $value;        
        }
    }
}

4 个答案:

答案 0 :(得分:2)

认为你想写这个 - is_array($ value)

答案 1 :(得分:1)

$key是字符串'报告'。所以is_array($key) == false。但是$_POST[$key]$value是一个数组。

答案 2 :(得分:0)

密钥永远不是数组。 总是标量或字符串。另一方面,该值可以是一个数组。

答案 3 :(得分:0)

也许您只想查看$ _POST ['报告'],并检查'值'是或不是数组(不是键):

if (isset($_POST['submit'])) {   
    foreach ($_POST['report'] as $key => $value) {             
        if (!is_array($value) && trim($value) == '')  {
            $value = 0; 
            $_SESSION['report'][$key] = $value;        
        } else {
            $_SESSION['report'][$key] = $value;        
        }
    }
}