我正在使用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(),即使传递的字符串中包含空格也会返回正确的验证。
答案 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功能。