新手问题.如何在php中检查输入是否为空,尽管输入可能包含数字0


Newbie issue. How to check if input is empty in php, although the input could contain digit 0?

我是PHP新手,通常我会使用以下行来检查输入是否为空:

 if(!isset($_SESSION['z']) || strlen(trim($_SESSION['z']) == 0))
 {
 echo "Unknown";
 }

但是,如果用户键入数字0,脚本会将输入识别为空。如何更改这些行以将0识别为字符串?

您的解决方案本应有效。正如评论员deceze所指出的,你的第二个条件打错了——应该是strlen(trim($_SESSION['z'])) == 0

但另一种解决方案是使用严格相等的校验===!==

if(!isset($arr['z']) || trim($arr['z']) === '')
{
echo "Unknown";
}

如果值为NULL或空字符串,则会导致"未知"。但任何其他值都不满足条件,因此值0或0.0应该有效。

不过,你的初步解决方案还是不错的。只要纠正打字错误。

if (!isset($_SESSION['z']) || strcmp(trim($_SESSION['z']), '') == 0)
{
  echo "Unknown";
}

如果两个string相同,则函数strcmp返回0。

<?php
session_start();
if(isset($_POST["z"])){$_SESSION['z']=$_POST["z"];}
if(!isset($_SESSION['z']) OR $_SESSION['z']==""){
    echo "Unknown";
}else{
    echo $_SESSION['z'];
}
?>
<form method="post"><input type="text" name="z"><input type="submit"></form>

这应该可以根据您的需要进行