如何在 php 中查看关联数组的数组是否为空
How to see if an array of associative arrays is empty in php
我有一个相当简单的问题,我需要查看 php 中的数组关联数组是否为空。我的数组如下所示:
array (
'person1' =>
array (
),
'person2' =>
array (
),
'person3' =>
array (
),
)
在我的例子中,三个人的三个数组什么都没有,所以我需要测试它是否为空。我已经完成了这个工作:
if ( empty($form_values['person1']) && empty($form_values['person2']) && empty($form_values['person3'] ) ){
echo 'values empty!!';
}
但我希望像下面这样使用 empty 更干净一些:
if (empty( $form_values )) {
echo 'HI!';
}
如果您正在寻找单线,那么您可以这样做:
$form_values = array (
'person1' =>
array (
),
'person2' =>
array (
),
'person3' =>
array (
),
);
if(array_sum(array_map(function($v){return !empty($v);}, $form_values)) === 0)
{
// empty
}
else
{
// not empty
}
使用循环来测试每个嵌套数组。如果其中 none 个非空,则整个数组为空。
$is_empty = true;
foreach ($form_values as $val) {
if (!empty($val)) {
$is_empty = false;
break;
}
}
您可以使用array_filter()
来过滤所有空数组元素。然后,您可以使用 empty
检查结果是否为空。
我对数组进行了简写,这样更容易阅读,因为数组是空的。 array()
效果相同。
$form_values = [
'person1' => [],
'person2' => [],
'person3' => []
];
if (empty(array_filter($form_values))) {
// empty
} else {
// not empty
}
<?php
$data =
[
'pig' => [],
'hog' => [],
'sow' => []
];
$all_empty = array_filter($data) === [];
var_dump($all_empty);
输出:
bool(true)
来自 array_filter 的手册:
If no callback is supplied, all empty entries of array will be
removed. See empty() for how PHP defines empty in this case.
请注意,如果某个项目被视为空的,如空字符串,它仍然 return 为真。这个测试可能不够严格。
更明确地说:
if (array_filter($data, function($v) {return $v !== []; }) === []) {}
过滤掉所有不是空数组的项目。如果所有项目都是空数组,我们将剩下一个空数组。
或搜索比较:
if (array_keys($data, []) == array_keys($data)) {}
检查属于包含空数组的项目的键是否与数组的键匹配。或者更确切地说,所有项目(如果它们存在)都是空数组。
请注意,空数组也将满足上述三种解决方案。
我有一个相当简单的问题,我需要查看 php 中的数组关联数组是否为空。我的数组如下所示:
array (
'person1' =>
array (
),
'person2' =>
array (
),
'person3' =>
array (
),
)
在我的例子中,三个人的三个数组什么都没有,所以我需要测试它是否为空。我已经完成了这个工作:
if ( empty($form_values['person1']) && empty($form_values['person2']) && empty($form_values['person3'] ) ){
echo 'values empty!!';
}
但我希望像下面这样使用 empty 更干净一些:
if (empty( $form_values )) {
echo 'HI!';
}
如果您正在寻找单线,那么您可以这样做:
$form_values = array (
'person1' =>
array (
),
'person2' =>
array (
),
'person3' =>
array (
),
);
if(array_sum(array_map(function($v){return !empty($v);}, $form_values)) === 0)
{
// empty
}
else
{
// not empty
}
使用循环来测试每个嵌套数组。如果其中 none 个非空,则整个数组为空。
$is_empty = true;
foreach ($form_values as $val) {
if (!empty($val)) {
$is_empty = false;
break;
}
}
您可以使用array_filter()
来过滤所有空数组元素。然后,您可以使用 empty
检查结果是否为空。
我对数组进行了简写,这样更容易阅读,因为数组是空的。 array()
效果相同。
$form_values = [
'person1' => [],
'person2' => [],
'person3' => []
];
if (empty(array_filter($form_values))) {
// empty
} else {
// not empty
}
<?php
$data =
[
'pig' => [],
'hog' => [],
'sow' => []
];
$all_empty = array_filter($data) === [];
var_dump($all_empty);
输出:
bool(true)
来自 array_filter 的手册:
If no callback is supplied, all empty entries of array will be removed. See empty() for how PHP defines empty in this case.
请注意,如果某个项目被视为空的,如空字符串,它仍然 return 为真。这个测试可能不够严格。
更明确地说:
if (array_filter($data, function($v) {return $v !== []; }) === []) {}
过滤掉所有不是空数组的项目。如果所有项目都是空数组,我们将剩下一个空数组。
或搜索比较:
if (array_keys($data, []) == array_keys($data)) {}
检查属于包含空数组的项目的键是否与数组的键匹配。或者更确切地说,所有项目(如果它们存在)都是空数组。
请注意,空数组也将满足上述三种解决方案。