检查php中的空值

时间:2014-06-27 07:50:52

标签: php validation is-empty

我正在使用PHP中的empty()函数检查一个值,看它是否为空。这会将以下内容验证为空:

"" (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; (a variable declared, but without a value)

我传递的值可以是字符串,数组或数字。但是,如果字符串有空格(" "),则不会将其视为空。在不创建自己的功能的情况下,检查这种情况的最简单方法是什么?我不能只做一个empty(trim($value)),因为$value可以是array

编辑:我不是要问如何检查字符串是否为空。我已经知道了。我问是否有一种方法可以将数组,数字或字符串传递给empty(),即使传递的字符串中包含空格也会返回正确的验证。

3 个答案:

答案 0 :(得分:2)

只需编写一个符合您需求的isEmpty()函数即可。

function isEmpty($value) {
    if(is_scalar($value) === false)
        throw new InvalidArgumentException('Please only provide scalar data to this function');

    if(is_array($value) === false) {
        return empty(trim($value));

    if(count($value) === 0)
        return true;

    foreach($value as $val) {
        if(isEmpty($val) === false)
            return false;
    }

    return false;
}

答案 1 :(得分:1)

最好的方法是创建自己的功能,但如果你真的有理由不这样做,你可以使用这样的东西:

$original_string_or_array = array(); // The variable that you want to check
$trimed_string_or_array = is_array($original_string_or_array) ? $original_string_or_array : trim($original_string_or_array);
if(empty($trimed_string_or_array)) {
    echo 'The variable is empty';
} else {
    echo 'The variable is NOT empty';
} 

答案 2 :(得分:0)

我真的更喜欢TiMESPLiNTER制作的功能,但这里有一个替代方案,没有功能

if( empty( $value ) or ( !is_array( $value ) and empty( trim( $value ) ) ) ) {
    echo 'Empty!';
}
else {
    echo 'Not empty!';
}

请注意,例如$value = array( 'key' => '' )将返回Not empty!。因此,我建议使用TiMESPLiNTERs功能。