php:'0'为空字符串()

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php:'0'为空字符串()相关的知识,希望对你有一定的参考价值。

我想将0视为一个整数,将'0'视为字符串,但是empty()在下面的示例中将'0'视为字符串,

$var = '0';

// Evaluates to true because $var is empty
if (empty($var)) {
    echo '$var is empty';
}

我如何'使'空()将'0'作为字符串?

谢谢。

答案

你做不到。这就是它的设计方式。相反,你可以写一个and语句来测试:

if (empty($var) && $var !== '0') {
    echo $var . ' is empty';
}

您可以使用isset,除非当然,您希望它转向其他空位,empty检查。

编辑

修复了检查以进行类型检查,感谢2371指出了:)

另一答案

在这种情况下不要使用empty,使用isset()代替它。这也将允许0作为整数。

$var = '0';
if (!isset($var)) {
    print '$var is not set';
}

$var = 0;
if (!isset($var)) {
    print '$var is not set';
}

也不应该打印任何东西。

另一答案

你不能,因为整数,字符串,浮点数,null对php无关紧要。

因为很酷:)

您必须检查变量is_numeric,isset,===,strlen等的特征。

例如:

if (strlen(@$var)==0) {
    echo @$var . ' is empty';
}

要么

if (@$var==="" || !isset($var)) {
    echo @$var . ' is empty';
}

或其他例子:)

谢谢阅读。

另一答案

如果你想跳过空$ filter并且不要跳过$ filter ='0'和其他值

$filter = ''; //or $filter = '0'; or $filter = '1';

//trim the $filter

if( isset($filter) and ( $filter != '' or $filter == '0') ) {

//$filter data 

};
另一答案

if ( (is_array($var) && empty($var)) || strlen($var) === 0 ) { echo $var . ' is empty'; }

另一答案

你不能与emptyFrom the PHP Manual:

以下内容被认为是空的:

  • “”(空字符串)
  • 0(0为整数)
  • “0”(0作为字符串)
  • 空值
  • array()(一个空数组)
  • var $ var; (声明的变量,但在类中没有值)

您必须添加其他额外的支票。

另一答案

你不能只用empty()。见manual。你可以这样做:

if ($var !== '0' && empty($var)) {
   echo "$var is empty and is not string '0'";
}

基本上,empty()的作用与:

if (!$var) ...

但是,如果未设置变量,则不会触发PHP Notice。

另一答案

你不能。来自the manual

如果var具有非空和非零值,则返回FALSE。

以下内容被认为是空的:

  • “”(空字符串)
  • 0(0为整数)
  • “0”(0作为字符串)
  • 空值
  • array()(一个空数组)
  • var $ var; (声明的变量,但在类中没有值)
另一答案

PHP具有不同的功能,可用于测试变量的值。三个有用的函数是isset(),empty()和is_null()。所有这些函数都返回一个布尔值。如果未正确使用这些功能,可能会导致意外结果。

isset()和empty()通常被视为相反的函数,但这并不总是正确的。在这篇文章中,我将解释这些功能之间的差异。

出()

From PHP manual – isset():

isset — Determine if a variable is set and is not NULL

换句话说,仅当变量不为null时才返回true。空()

From PHP Manual – empty():

empty — Determine whether a variable is empty

换句话说,如果变量是空字符串,false,array(),NULL,“0?”,0和未设置的变量,它将返回true。一片空白()

From PHP Manual – is_null():

is_null — Finds whether a variable is NULL

换句话说,仅当变量为null时才返回true。 is_null()与isset()相反,除了一个差异,即isset()可以应用于未知变量,但is_null()仅适用于声明的变量。

图中的表格很容易参考这些函数将针对不同的值返回的内容。空格表示函数返回bool(false)。 enter image description here

我也做了自定义功能来检查所有的东西。

function checkEmpty($var, $term = ""){
    if(isset($var) && trim($var) != "" && (!empty($var) || trim($var) == 0)){
        return true;
    }
    else{
        if($term != ""){
            return array("status" => "error", "desc" => "$term can not be empty");
        }
        else{
            return array("status" => "error", "desc" => "value can not be empty");
        }
    }
}
另一答案

在你的两个案例中,empty()将返回true。检查doc - http://php.net/empty

我建议使用不同的功能来匹配您的规格。

另一答案

我总是添加到我的代码库中

function is_blank($value) {
    return empty($value) && !is_numeric($value);
}

并使用它而不是empty()。它解决了将零(int,float或string)保持为非空的问题。

请参阅2011年5月添加的http://www.php.net/manual/en/function.empty.php#103756

另一答案
$var = '0';

// Evaluates to true because $var is empty
if (empty($var) && $var !== '0') {
    echo '$var is empty or the string "0"';
}
另一答案

empty是迄今为止PHP汇编中最令人困惑和无用的功能。不要使用它。

检查值时,您想要了解三件事。

  • 值存在(使用isset)
  • 该值具有特定类型(使用is_xxx)
  • 该值具有特定属性(使用比较运算符,strpos或正则表达式)。

(最后两个可以组合成一个带有类型转换或'===')。

例子:

if(isset($var) && is_string($var) && strlen($var) > 0)...
if(isset($var) && intval($var) > 0)...
if(isset($var) && $var === '0')...

这似乎更冗长,但清楚地显示了你正在做的事情。对于结构对象,具有快捷方式获取器通常是有意义的,例如,

 /// get a string
 function s($ary, $key, $default = '') {
     if(!isset($ary[$key])) return $default;
     $s = trim($ary[$key]);
     return strlen($s) ? $s : $default;
 }
 /// get a natural number
 function n($ary, $key, $default = 0) {
     $n = intval(s($ary, $key));
     return $n > 0 ? $n : $default;
 }

 $name = s($_POST, 'name');
 $age  = n($_POST, 'age');

以上是关于php:'0'为空字符串()的主要内容,如果未能解决你的问题,请参考以下文章

浅谈PHP中单引号和双引号到底有什么区别呢?

发送二进制空字符串' 0'

求一串完整的php代码+html php随机生成10位数字,而且永远不会重复,在一个单行文本框内输出

C语言中,如何将一串字符数组形成字符串

php如何判断字符串是不是是字母和数字的组合

js中如何判断字符串为空字符串?