>我处于一个非常特殊的情况,我有一个索引数组$name_array
,它有 0 个索引但没有值,如下所示;
Array
(
[0] =>
)
我想将此数组视为空数组,我已经在 isset($name_array)
和 !empty($name_array)
中检查了它,但这个数组同时通过了这两个条件。我不知道我应该应用什么条件来检测这个数组是否具有这些值,那么它是空的?
例如;
if(/*some condition*/($name_array))
{
echo 'I am not empty';
}
else
{
echo 'I am empty';
}
您可以使用
array_filter
:
if (!array_filter($name_array)) {
// empty or has "empty" values
}
默认情况下,array_filter
过滤掉任何"空"值,如空字符串、null
或false
。
!empty
足以检查数组的第一个索引是否有效:-
if(!empty($array[0])){
// $array[0] has value
}
对于您不知道第一个索引键的多维数组,
if(!empty($array[key($array)])){
echo $array[key($array)];
}
空 - 如果 var 存在且具有非空、非零值,则返回 FALSE。否则返回 TRUE。
以下内容被视为空:
"(空字符串)
0(0 作为整数)
0.0(0 作为浮点数)
"0"(0 作为字符串)
零
假
array() (一个空数组)
$var;(已声明但没有值的变量)
没有内置函数来检查
您可以创建自己的:)这里有一个例子
function is_array_empty($name_array) {
foreach($name_array as $elm) {
if(!empty($elm)) return FALSE;
}
return TRUE;
}
你只是想检查第一个元素是否为空吗? 如果是这样:
if ( ! current($name_array)) {
// first element in $name_array is niether false, null, 0 or an empty string
}
如果您需要检查更具体的情况,只需将感叹号更改为您需要检查的任何内容即可。
function is_array_empty($name_array) {
$arrSize=sizeof($name_array);
$emptElements=0;
foreach($name_array as $elm) {
if(empty($elm)){
$emptElements++;
}
}
if($emptElements==$arrSize){
return TRUE;
}else{
return FALSE;
}
}