1

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

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

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

4

3 回答 3

2

您的解决方案应该有效。正如评论员 deceze 指出的那样,您的第二个条件是错误的,它应该是strlen(trim($_SESSION['z'])) == 0.

但替代解决方案是使用严格相等检查===!==.

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

如果值为 NULL 或空字符串,这将适用,导致“未知”。但是任何其他值都不满足条件,所以值 0 或 0.0 应该可以工作。

但同样,您的初始解决方案很好。改正错字就好了。

于 2013-08-31T14:23:54.847 回答
0
if (!isset($_SESSION['z']) || strcmp(trim($_SESSION['z']), '') == 0)
{
  echo "Unknown";
}

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

于 2013-08-31T12:46:56.447 回答
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>

这应该可以按您的意愿工作

于 2013-08-31T12:49:59.783 回答