如何检查PHP POST数组是否设置了任何值?

时间:2017-08-18 16:09:43

标签: php

我需要检查数组中是否有$_POST数组的一部分有值。设置空数组中的值,因此上面的示例将不会产生所需的结果。 (此数组是完整$_POST数组的子集)。

( 
[columns] => 
[coached_textbox] => 1
[item] => Array
    (
        [first] => Array
            (
                [coach_menu_value] => one
                [coach_menu_name] => Menu One
            )
        [second] => Array
            (
                [coach_menu_value] => 
                [coach_menu_name] => 
            ) 
    (

有没有一种简单的方法可以测试这两个数组项是否有值?我可以测试数组中的每个项目的值,但这看起来不够优雅。

早期帖子中提供的这个示例提供了一个很好的示例,说明如何测试代码初始化array()的值。

if ($signup_errors) {
  // there was an error
} else {
 // there wasn't
}

但是,它不适用于$_POST数组中的数组。

2 个答案:

答案 0 :(得分:1)

使用如下的递归函数遍历数组。如果数组包含至少一个非空值或非空字符串,则该函数将返回true

function traverseArray($arr){
    $flag = false;
    foreach($arr as $value){
        if(is_array($value)){
            $flag = traverseArray($value);
            if($flag) return true;
        }else{
            if(isset($value) && $value != '') return true;
        }
    }
    return $flag;
}

这就是你应该如何调用这个功能,
(假设$array是您的原始数组)

$isNonEmptyArray = traverseArray($array);
if($isNonEmptyArray){
    // At least one element in the array is either 
    // non-null value or non-empty string
}else{
    // Array is completely empty
}

这是一个现场演示:https://eval.in/847211

答案 1 :(得分:0)

您可以过滤掉空值并检查empty()

if (empty(array_filter($_POST['item']['second']))) {
  // It is empty
} else {
  // It is NOT empty
}

甚至只是检查虚假值:

if (!array_filter($_POST['item']['second'])) {
  // It is empty
} else {
  // It is NOT empty
}