Php 检查数组是否为空
我有以下代码Php 检查数组是否为空,php,arrays,Php,Arrays,我有以下代码 <?php $error = array(); $error['something'] = false; $error['somethingelse'] = false; if (!empty($error)) { echo 'Error'; } else { echo 'No errors'; } ?> 但是,empty($error)仍然返回true,即使未设置任何内容 什么不对?数组中有两个元素,这绝对不意味着数组是空的。作为快速解决方
<?php
$error = array();
$error['something'] = false;
$error['somethingelse'] = false;
if (!empty($error))
{
echo 'Error';
}
else
{
echo 'No errors';
}
?>
但是,empty($error)
仍然返回true
,即使未设置任何内容
什么不对?数组中有两个元素,这绝对不意味着数组是空的。作为快速解决方法,您可以执行以下操作:
$errors = array_filter($errors);
if (!empty($errors)) {
}
array\u filter()
函数的默认行为将从数组中删除所有等于null
、0
、'
或false
的值
否则,在您的特定情况下,
empty()
如果至少有一个元素具有“empty”值,则构造将始终返回true
。如果0
没有元素,请尝试使用sizeof
检查其大小。来自PHP文档:
如果var具有非空且非零值,则返回FALSE
以下内容被认为是空的:
"" (an empty string)
0 (0 as an integer)
0.0 (0 as a float)
"0" (0 as a string)
NULL
FALSE
array() (an empty array)
var $var; (a variable declared, but without a value in a class)
然而,empty($error)仍然返回true,即使未设置任何内容
empty()
不是这样工作的。根据,它将仅在空数组上返回true。其他任何东西都没有意义。您也可以通过执行以下操作来检查它
if(count($array) > 0)
{
echo 'Error';
}
else
{
echo 'No Error';
}
我不能复制它(PHP5.3.6):
您在哪里执行返回true的empty()
调用?
<?php
if(empty($myarray))
echo"true";
else
echo "false";
?>
PHP的内置函数检查变量是否为空、null、false或表示为零。它不会因为与数组项关联的值为false而返回true,在本例中,数组中包含实际元素,这就是计算的全部内容
如果要检查关联数组中的特定错误条件是否设置为true,可以使用该函数筛选其值设置为true的关键帧
$set_errors = array_keys( $errors, true );
然后可以使用empty()函数检查此数组是否为空,同时告诉您是否存在错误以及发生了哪些错误。函数empty()
不适用于测试空数组!
例如:
功能是必需的:
function is_array_empty($a){
foreach($a as $elm)
if(!empty($elm)) return false;
return true;
}
好的,这是一个非常古老的问题:),但我发现这个线程在搜索解决方案,但我没有找到一个好的
再见
(对不起我的英语)hi array是一个对象,因此它的类型为空或为空
<?php
if($error!=null)
echo "array is blank or null or not array";
//OR
if(!empty($error))
echo "array is blank or null or not array";
//OR
if(is_array($error))
echo "array is blank or null or not array";
?>
在PHP中,即使数组中的单个项或对象的属性为空,数组或对象也不会使用
empty($subject)
函数计算为空。换句话说,将一组单独测试为“空”的数据拼凑在一起会创建一个非空的组合。
使用以下PHP函数确定数组中的项或对象的属性是否为空:
function functionallyEmpty($o)
{
if (empty($o)) return true;
else if (is_numeric($o)) return false;
else if (is_string($o)) return !strlen(trim($o));
else if (is_object($o)) return functionallyEmpty((array)$o);
// If it's an array!
foreach($o as $element)
if (functionallyEmpty($element)) continue;
else return false;
// all good.
return true;
}
用法示例:
$subject = array('', '', '');
empty($subject); // returns false
functionallyEmpty($subject); // returns true
class $Subject {
a => '',
b => array()
}
$theSubject = new Subject();
empty($theSubject); // returns false
functionallyEmpty($theSubject); // returns true
包含零元素的数组将转换为false
在Windows上的PHP5.3中对我正确工作-我得到
错误
检查答案2这段代码的输出是“错误”还是“无错误”?你想实现什么?当我运行这段代码时,我得到的错误是正确的,因为数组有键,因此不是空的。你想让false以某种方式等同于“不存在”吗?我也有错误。我希望这样,如果$error['something']=true,那么只有$error才会返回true。array\u filter($input)也会从$input中删除空数组。如果(array\u filter($errors)){}array\u keys($errors,true)与此筛选器做的相同,我认为这可以被缩减为。(大多数人不使用第二个参数,但您可以使用它进行搜索。)或者array_sum(array_values($errors))只会告诉您有多少错误。您不需要计算元素或使用empty()。像php-r'echo array()这样的一行程序?“T”:“F”将显示空数组或非空数组的真实性。empty()处理FALSE和isset(),因此您可能需要empty()。sizeof
是count
的别名。提醒:sizeof
在弃用列表中,请参阅在本例中,count(或sizeof)将返回两个,由于这两个值设置为false。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会无效。这是数组空检查的最佳方法。或者您可以使用$set\u errors=array\u keys($errors,true);Source至少对包含布尔(真)值的输入不起作用。最好这样写:
function functionallyEmpty($o)
{
if (empty($o)) return true;
else if (is_numeric($o)) return false;
else if (is_string($o)) return !strlen(trim($o));
else if (is_object($o)) return functionallyEmpty((array)$o);
// If it's an array!
foreach($o as $element)
if (functionallyEmpty($element)) continue;
else return false;
// all good.
return true;
}
$subject = array('', '', '');
empty($subject); // returns false
functionallyEmpty($subject); // returns true
class $Subject {
a => '',
b => array()
}
$theSubject = new Subject();
empty($theSubject); // returns false
functionallyEmpty($theSubject); // returns true