我有这个数组我在Laravel中从我的视图发布到我的控制器,我试图检查数组中是否有任何值。 数组被初始化并发送到视图,在视图内部我有一个表填充输入,如果用户没有填写表并提交表单,数组将返回如下:
Array
(
[51] => Array
(
[5] =>
[2] =>
[8] =>
)
[78] => Array
(
[18] =>
[23] =>
[21] =>
)
)
澄清和沟通:
array(
[key1]=>array
(
[key1_1]=>value
)
)
我想检查所有value
是否为空,在本例中它们是否为空,对于1维数组,它将类似于empty($array)
。
我已经尝试了array_filter()
,但如果值在数组内部键内的键内,则无法提供服务。
我知道我可以使用foreach
再次输入key1
然后foreach
输入key1_1
并递归检查值是否为空并返回false并返回false只要值不为空,就打破循环。
但PHP中有没有其他方法或方法可以检查这些值?类似于empty($array)
但类似于数组并只检查value
?或具有empty(array_filter(array_filter($array)))
逻辑的东西?
或除了使用foreach
注意:我使用的是Laravel 5.5,PHP 7.1.9
注意:我没有尝试如果找到一个特定的值为null,我问的是PHP中是否有内置方法或者比我用来检查值是否全部为null的方法更简单或不。
答案 0 :(得分:1)
执行此操作的一种方法是使用array_reduce并将空数组作为起始值传递。然后在回调函数中使用array_merge。
最后,您可以使用array_filter删除空条目,然后使用count最终数组中的项目。
$arrays = [
51 => [
5 => "",
2 => "",
8 => "77"
],
78 => [
18 => "",
23 => "99",
21 => ""
]
];
$result = array_reduce($arrays, function($carry, $item) {
$carry = array_merge($carry, $item);
return $carry;
}, []);
答案 1 :(得分:1)
array_map('array_filter', $array)
将删除所有内部空值,使数组变为:
[
51 => [],
78 => [
18 => 'not empty'
]
]
然后再array_filter
删除所有空数组。总结:
if (!array_filter(array_map('array_filter', $array))) {
echo 'The array is completely empty';
}
答案 2 :(得分:-1)
如果您只是想获取数组中的空插槽数,这应该可以使用。
$myArray = ["bob", "fred", "bill", "mary", "", "jane", ""];
$count = 0;
foreach($myArray as $key=>$value) {
if(!$value) {
$count++;
}
}
echo $count;