PHP空函数 - 关联数组

时间:2014-03-29 07:24:50

标签: php

有谁可以解释为什么这会返回非空?

<?php

$attributes=array("description"=>"","quantity"=>"","price"=>"","discount"=>"");

if(empty($attributes))
   echo 'empty';
else
    echo 'non empty';
exit;

?>

2 个答案:

答案 0 :(得分:5)

来自manual documentation for empty()

  

确定变量是否为空。 如果变量不存在或者其值等于FALSE,则该变量被视为空。如果变量不存在,则empty()不会生成警告。

在这种情况下,变量$attributes存在,并且它不等于FALSE。因此empty()将返回布尔值FALSE

检查每一个是否为空并回显一条消息:

foreach ($attributes as $key => $value) {
    if (empty($value)) {
        echo "'$key' is empty\n";
    }
}

要检查 all 数组值是否为空:

if(!array_filter($attributes)) {
    echo 'All values are empty';
}

检查任何数组值是否为空:

if (array_search('', $attributes) !== FALSE) {
    echo 'One of the values in the array is empty';
}

答案 1 :(得分:0)

这是因为你有一个空字符串数组,它不是一个空数组。