我需要检查数组中是否有$_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
数组中的数组。
答案 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
}