在 php 中,0被视为空吗?

代码将进一步解释:

$var = 0;


if (!empty($var)){
echo "Its not empty";
} else {
echo "Its empty";
}

结果返回“其为空”。我认为 void ()将检查我是否已经设置了变量并在其中有值。为什么它返回“它是空的”? ?

209746 次浏览

Http://php.net/empty

下列物品被认为是空的:

  • “”(空字符串)
  • 0(0作为整数)
  • 0.0(0作为浮点数)
  • “0”(0作为字符串)
  • 无效
  • 假的
  • Array ()(空数组)
  • Var $var; (声明的变量,但类中没有值)

注意,这个列表与强制执行布尔 false的列表完全相同。empty就是简单的 !isset($var) || !$var。试试 isset

下列物品被认为是空的:

  • “”(空字符串)
  • 0(0作为整数)
  • “0”(0作为字符串)
  • 无效
  • 假的
  • Array ()(空数组)
  • Var $var; (声明的变量,但是 类中没有值)

来自 PHP 手册

在您的例子中,$var0,所以 empty($var)将返回 true,在测试结果之前,您将对其进行否定,因此 else 块将运行,并给出“ Its empty”作为输出。

empty() 对于计算结果为 FALSE的所有内容返回 true,它实际上是一个“ not”(!)。我想你指的是 isset()

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

下列物品被认为是空的:

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

更多: http://php.net/manual/en/function.empty.php

我想知道为什么没有人建议非常方便的 类型比较表。它回答了关于公共函数和比较运算符的所有问题。

片段:

Expression      | empty($x)
----------------+--------
$x = "";        | true
$x = null       | true
var $x;         | true
$x is undefined | true
$x = array();   | true
$x = false;     | true
$x = true;      | false
$x = 1;         | false
$x = 42;        | false
$x = 0;         | true
$x = -1;        | false
$x = "1";       | false
$x = "0";       | true
$x = "-1";      | false
$x = "php";     | false
$x = "true";    | false
$x = "false";   | false

除了其他备忘单,我总是把这张桌子的硬拷贝放在我的桌子上,以防我不确定

从语言学的角度来看,空荡荡的具有 没有价值的意义。就像其他人说的,你必须使用 isset()来检查一个变量是否已经被定义,这就是你要做的。

实际上 isset 只是检查变量是否设置。在这种情况下,如果你想检查变量是真的为零还是为空,你可以使用这个例子:

$myVar = '';
if (empty($myVar))
{
echo "Its empty";
}
echo "<br/>";


if ($myVar===0)
{
echo "also zero!";
}

注意 $myVar = = 0的作用类似于空函数。

对于数值,应该使用 is _ numeric 函数:

$var = 0;


if (is_numeric($var))
{
echo "Its not empty";
}
else
{
echo "Its empty";
}
if (empty($var) && $pieces[$var] != '0') {
//do something
}

在我的情况下,这个代码工作。

使用 strlen()代替。 我使用1/0作为某些变量的可能值,也遇到了同样的问题。 我使用 if (strlen($_POST['myValue']) == 0)来测试变量中是否有字符。

我最近在这件事上也被抓了个正着。我们经常遇到的问题是未设置的变量——比如一个可能存在也可能不存在的表单元素,但是对于许多元素来说,0(或者字符串 '0',它会更准确地通过文章,但仍然会被评估为“ false”)是一个合法的值,比如在下拉列表中。

首先使用 empty(),然后使用 strlen()是你最好的,如果你也需要这样做:

if(!empty($var) && strlen($var)){
echo '"$var" is present and has a non-falsey value!';
}

要接受0作为变量中的值,请使用 isset

检查变量是否为空

$var = 0;


if ($var == '') {
echo "empty";
} else {
echo "not empty";
}
//output is empty

检查是否设置了变量

$var = 0;


if (isset($var)) {
echo "not empty";
} else {
echo "empty";
}
//output is not empty

对我有效!

//
if(isset($_POST['post_var'])&&$_POST['post_var']!==''){
echo $_POST['post_var'];
}


//results:
1 if $_POST['post_var']='1'
0 if $_POST['post_var']='0'
skip if $_POST['post_var']=''

空的意思应该是空的,不管 Deceze 说什么。

等我找到的时候

$var = '';
$var = '0';

我预计 var_dump(empty($var));将返回 false。

如果你在一个数组中检查东西,你总是必须先做 isset($var)

只使用 ($_POST['input_field_name'])!=0而不使用 !($_POST['input_field_name'])==0,则0不被视为空。

不确定是否还有人在寻找解释和解决方案。上面的注释说明了 TRUE/FALSE/1/0之间的区别。
我只是想把我的2分钱的方式显示的实际价值。

BOOLEAN

如果您使用的是布尔数据类型,那么您将寻找 TRUE 与 FALSE 结果; 如果您将其存储在 MySQL 中,那么它将被存储为1 rep。0(如果我没记错的话,这在您的服务器内存中是相同的)。

因此,要在 PHP 中显示这个值,您需要检查它是 TRUE (1)还是 FALSE (0) ,并显示您想要的任何内容: “ TRUE”或“ FALSE”,或者可能是“1”或“0”。
注意,所有大于(或不同于)0的内容在 PHP 中也将被视为 TRUE。例如: 2,“ abc”,等等都将返回 TRUE。

比特,丁丁

如果您使用的是数字数据类型,那么它的存储方式是相同的。
要显示该值,需要告诉 PHP 将其作为数字处理。我找到的最简单的方法是乘以1。

正确的例子。只需在数据库中创建 int 类型字段(例如移动号码) ,并通过表单为下面的数据库提交一个空值,或者只需使用 SQL 插入。它将被保存在数据库0中,因为它是 int 类型,不能保存为空或空。因此它是空的,但是它将被保存为0。因此,当您通过 PHP 获取数据并检查空值时。它非常有用,逻辑上也是正确的。

0.00.0.000.0.0000... . 0.0... 0也是空的,上面的例子也可以用来在数据库中存储不同类型的值,比如 float、 double、宵夜(宵夜有不同的变体,比如0.000等等)。

您需要使用 isset ()来检查是否设置了 value。