PHP:为什么我们在'if'语句中使用stristr()作为条件,当它的返回类型是字符串,而不是bool?

时间:2014-09-21 13:36:14

标签: php if-statement strstr

问题来自here(页面上最后一个PHP程序)的一段代码中的声明声明:

if (stristr($q, substr($name,0,$len))) {...}

但是根据manualstristr()的返回类型是字符串。它返回一个字符串,而不是bool,那么我们如何在if语句中使用它?

2 个答案:

答案 0 :(得分:3)

与大多数编程语言一样,PHP将条件表达式(if语句中的代码)评估为布尔表达式:

if (123)
    echo '123 is true';

这将回应文本,因为当涉及到整数时,除了0之外的所有内容都是真的(或者因为它也是已知的)。 您可以查看官方文档here,详细了解哪些类型/值评估为true,哪些值为false。

当然,在strstrstristr的情况下,当没有找到子字符串时,该函数实际上将返回false,因此返回值的类型和值检查并非罕见:

if (stristr($string, 'needle') !== false)
    echo 'The needle was found';

答案 1 :(得分:1)

从您发布的链接

  

返回值

     

返回匹配的子字符串。如果未找到needle,则返回FALSE。

当它返回一个字符串时,PHP在if语句中使用时认为非空字符串是真实的