我有下面的代码
<?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,即使什么都没有设置。
哪里不对?
当前回答
然而,empty($error)仍然返回true,即使什么都没有设置。
这不是empty()的工作方式。根据手册,它只在空数组上返回true。其他的都说不通。
其他回答
<?php
if(empty($myarray))
echo"true";
else
echo "false";
?>
我不能复制(php 5.3.6):
php > $error = array();
php > $error['something'] = false;
php > $error['somethingelse'] = false;
php > var_dump(empty($error));
bool(false)
php > $error = array();
php > var_dump(empty($error));
bool(true)
php >
到底在哪里执行返回true的empty()调用?
在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
你也可以通过。
if(count($array) > 0)
{
echo 'Error';
}
else
{
echo 'No Error';
}
然而,empty($error)仍然返回true,即使什么都没有设置。
这不是empty()的工作方式。根据手册,它只在空数组上返回true。其他的都说不通。