PHP值怎么可能包含长度为零、不等于空字符串或null的字符串?
我正在从内部存储中检索一些数据,如果失败,我会得到非常具体的响应。对此变量调用PHP值怎么可能包含长度为零、不等于空字符串或null的字符串?,php,string,null,strlen,Php,String,Null,Strlen,我正在从内部存储中检索一些数据,如果失败,我会得到非常具体的响应。对此变量调用strlen(),将返回零的值。它也不等于NULL或“”。我正在使用此代码测试: if ($data === NULL) { echo("data was null\n"); } else if ($data === "") { echo("data was empty string\n"); } else if (strlen($data) == 0) { echo("data was len
strlen()
,将返回零的值。它也不等于NULL或“”。我正在使用此代码测试:
if ($data === NULL)
{
echo("data was null\n");
}
else if ($data === "")
{
echo("data was empty string\n");
}
else if (strlen($data) == 0)
{
echo("data was length zero\n");
}
此结果输出的
数据长度为零
。变量可能包含长度为零、非空且不是空字符串的内容?返回值必须为false
echo strlen(false); // outputs 0
试试这个:
$data = false;
我不知道为什么false有一个strlen,但它有。这可能不是答案。我只能在您提供
var\u dump($data)时回答
但我觉得让我吃惊的是:
$data = "\0";
if ($data === NULL)
{
echo("data was null\n");
}
else if ($data === "")
{
echo "data was empty string\n";
}
else if (strlen($data) == 0)
{
echo "data was length zero\n";
}
else
{
echo "something strange happened\n";
}
输出:发生了奇怪的事情
:)回显$data时会发生什么?
var\u dump($data)代码>去营救。所以它是什么?它是一只鸟!这是一架飞机。。。不,这只是兰斯洛特。否则如果($data==”)
我认为三个等号与类型匹配,而不是像冈尔所说的字符串。$data
可能不是类型string
false
。字符串中的ASCII空字符与PHP二进制字符串的美不一样<代码>\0
有strlen()
的1个。。。史诗!PHP没有字符串,只有字节数组。你可以把任何东西粘在里面,\0
对它没有影响:)strlen
更像是count
@MarkBaker我知道,但我希望strlen为零。Thx代码愤怒!!!当然你是对的,我们不是在C!!对不起,我完全错了。。。。一旦你们都读了我的文章,我就会删除这篇文章comment@hek2mgl你可以把它放在这里,以便其他人可以阅读我的评论,以防他们来自像我这样的C/C++背景:)我非常讨厌动态类型语言,因为任何东西都是其他东西。@code对动态类型语言感到愤怒。我并不讨厌他们,但我和你一样,松散的打字带来的问题比它带来的好处更多$data=0;但是,不会给出相同的结果。它有一个strlen
,原因与您可以添加两个字符串(“aa”+“bb”
)或str_replace(0,null,false)
:值会自动转换为消费者想要的任何类型。另一个问题是,结果可能没有意义。