当前位置:  开发笔记 > 编程语言 > 正文

检查变量是否为空或空字符串的更好方法?

如何解决《检查变量是否为空或空字符串的更好方法?》经验,为你挑选了5个好方法。

由于PHP是一种动态语言,检查提供的字段是否为空的最佳方法是什么?

我想确保:

    null被视为空字符串

    仅限空白字符串被视为空

    "0"不算空

这是我到目前为止所得到的:

$question = trim($_POST['question']);

if ("" === "$question") {
    // Handle error here
}

必须有一种更简单的方法吗?



1> Michael Hare..:
// Function for basic field validation (present and neither empty nor only white space
function IsNullOrEmptyString($str){
    return (!isset($str) || trim($str) === '');
}


虽然这解决了它,但我不确定它是否更简单.+1无论如何
这里的目的是什么?isset()?与is_null()有什么不同?
由于OP要求一个非常简单的操作的"更简单"版本,我将说"更好"是实际需要的.
我把它变成了一个功能.这应该使您的验证代码更简单

2> 小智..:

老帖子,但有人可能需要它,因为我做;)

if (strlen($str) == 0){
do what ever
}

替换$str你的变量. NULL并且""在使用时都返回0 strlen.


@Noumenon因为这会在不解决任何问题的情况下损害可读性.很容易将你的建议读作"如果有一个长度",而它(当然)意味着相反.
为什么== 0而不仅仅是(strlen($ str))?
如果有人关心的话,对于只有空格的字符串是无济于事的
并且总是:`if(strcmp('',$ var)== 0)......`
如果未设置变量,则会产生警告

3> kta..:

使用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)

有关详细信息,请检查空功能


张贴者说,他们不想将“ 0”视为空
谁支持这个答案?首先阅读问题。

4> Adal..:

如果我错了,我会谦卑地接受,但我在自己的测试结果中发现以下内容适用于测试字符串(0)""和NULL值变量:

if ( $question ) {
  // Handle success here
}

这也可以反过来测试成功如下:

if ( !$question ) {
  // Handle error here
}



5> Ben Blank..:

注意trim()函数的假阴性- 它在修剪之前执行一个转换为字符串,因此如果你传递一个空数组,它将返回例如"Array".这可能不是问题,取决于您处理数据的方式,但是使用您提供的代码,question[]可以在POST数据中提供名为的字段,并且该字段看起来是非空字符串.相反,我会建议:

$question = $_POST['question'];

if (!is_string || ($question = trim($question))) {
    // Handle error here
}

// If $question was a string, it will have been trimmed by this point

推荐阅读
360691894_8a5c48
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有