使用empty()或count()可判断PHP数组是否为空;empty()适用于快速判断变量是否为“假值”,而count()===0更精确判断数组无元素,避免0、false等值干扰。

检查PHP数组是否为空,我们最常用也最直接的办法就是利用
empty()
count()
要判断PHP数组是否为空,你可以选择使用
empty()
count()
empty()
empty($array)
true
null
0
false
$emptyArray = [];
$nonEmptyArray = ['a', 'b'];
$zeroArray = [0]; // 注意这里!
if (empty($emptyArray)) {
echo "emptyArray 是空的。\n"; // 输出:emptyArray 是空的。
}
if (empty($nonEmptyArray)) {
echo "nonEmptyArray 是空的。\n";
} else {
echo "nonEmptyArray 不是空的。\n"; // 输出:nonEmptyArray 不是空的。
}
if (empty($zeroArray)) {
echo "zeroArray 是空的。\n"; // 不会输出,因为 [0] 并不被 empty() 认为是空的数组。
} else {
echo "zeroArray 不是空的。\n"; // 输出:zeroArray 不是空的。
}而
count()
count($array) === 0
count()
立即学习“PHP免费学习笔记(深入)”;
$emptyArray = [];
$nonEmptyArray = ['a', 'b'];
if (count($emptyArray) === 0) {
echo "emptyArray 是空的。\n"; // 输出:emptyArray 是空的。
}
if (count($nonEmptyArray) === 0) {
echo "nonEmptyArray 是空的。\n";
} else {
echo "nonEmptyArray 不是空的。\n"; // 输出:nonEmptyArray 不是空的。
}选择哪个函数,很大程度上取决于你对“空”的定义。如果你想判断一个变量是否有值,或者说是否为“假值”状态,
empty()
count()
empty()
isset()
empty()
empty($var)
$var
""
0
0.0
"0"
null
false
[]
这意味着,如果你有一个数组
$arr = [0];
empty($arr)
false
0
$var = 0;
empty($var)
true
empty()
至于它和
isset()
empty($var)
!isset($var) || $var == false
empty()
isset()
false
举个例子:
$a; // 未定义变量 $b = null; $c = []; $d = 0; $e = 'hello'; var_dump(empty($a)); // true (因为 $a 未定义,isset($a) 为 false) var_dump(isset($a)); // false var_dump(empty($b)); // true (因为 $b 为 null) var_dump(isset($b)); // true var_dump(empty($c)); // true (因为 $c 是空数组) var_dump(isset($c)); // true var_dump(empty($d)); // true (因为 $d 是整数 0) var_dump(isset($d)); // true var_dump(empty($e)); // false (因为 $e 是非空字符串) var_dump(isset($e)); // true
从上面的例子可以看出,
empty()
isset()
!empty($var)
0
false
count($array) === 0
count()
count()
count($array) === 0
empty()
0
false
优势:
count($array) === 0
0
false
null
$arr = [0, false, null];
count($arr)
3
empty($arr)
false
0
count()
count()
empty()
empty()
潜在陷阱:
非数组变量:
count()
Countable
Countable
count()
1
$str = "hello"; $num = 123; $obj = new stdClass(); var_dump(count($str)); // PHP 7.2+ 警告并返回 1 var_dump(count($num)); // PHP 7.2+ 警告并返回 1 var_dump(count($obj)); // PHP 7.2+ 警告并返回 1
这可能导致一个非数组变量被错误地判断为“非空数组”(即
count($var) === 1
count()
is_array()
$data = "some string";
if (is_array($data) && count($data) === 0) {
echo "数组是空的。\n";
} else {
echo "不是空数组或不是数组。\n"; // 输出:不是空数组或不是数组。
}null
null
count()
0
$undefinedVar; $nullVar = null; var_dump(count($undefinedVar)); // 警告:Undefined variable,返回 0 var_dump(count($nullVar)); // 警告:count(): Parameter must be an array or an object that implements Countable,返回 0
在这种情况下,
empty()
null
isset()
count()
$data = null;
if (isset($data) && is_array($data) && count($data) === 0) {
echo "数组是空的。\n";
} else {
echo "不是空数组或不是数组。\n";
}但说实话,为了避免这些边缘情况,直接用
empty($data)
isset()
[]
[0]
count()
empty()
count()
虽然
empty()
count()
直接布尔转换 (!$array
false
!$array
$emptyArray = [];
$nonEmptyArray = ['a'];
if (!$emptyArray) {
echo "emptyArray 是空的 (通过布尔转换)。\n"; // 输出:emptyArray 是空的 (通过布尔转换)。
}
if (!$nonEmptyArray) {
echo "nonEmptyArray 是空的 (通过布尔转换)。\n";
} else {
echo "nonEmptyArray 不是空的 (通过布尔转换)。\n"; // 输出:nonEmptyArray 不是空的 (通过布尔转换)。
}适用场景: 这种方法非常简洁,但它的行为与
empty()
$array
null
false
0
!$array
true
[]
[0]
empty()
empty()
sizeof()
sizeof()
count()
$emptyArray = [];
if (sizeof($emptyArray) === 0) {
echo "emptyArray 是空的 (通过 sizeof())。\n"; // 输出:emptyArray 是空的 (通过 sizeof())。
}适用场景: 没有特别的适用场景,只是
count()
sizeof
count()
迭代检查(不推荐用于判断空): 虽然不是直接判断是否为空,但在某些复杂的业务逻辑中,你可能会通过尝试遍历数组来间接判断其是否有内容。例如:
$emptyArray = [];
$hasElements = false;
foreach ($emptyArray as $item) {
$hasElements = true;
break;
}
if (!$hasElements) {
echo "emptyArray 是空的 (通过迭代检查)。\n"; // 输出:emptyArray 是空的 (通过迭代检查)。
}适用场景: 这绝对不是一个高效或推荐的检查数组是否为空的方法。它更适用于当你需要处理数组元素,并且在处理第一个元素时就确定数组非空,或者在没有元素时执行特定逻辑的场景。作为单独判断数组是否为空的手段,它过于繁琐且性能低下。
总而言之,在PHP中检查数组是否为空,
empty()
count()
empty()
count()
以上就是如何检查PHP数组是否为空?利用empty()或count()函数判断的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号