在php中,使用strstr作为布尔检查意味着什么?

在php中,使用strstr作为布尔检查意味着什么?,php,boolean,strstr,Php,Boolean,Strstr,例如,给定代码: if(strstr($key, ".")){ // do something } strstr返回字符串,如何将其用作布尔值?它是如何变成真的还是假的 下面是一个例子 <?php $email = 'name@example.com'; $domain = strstr($email, '@'); echo $domain; // prints @example.com $user = strstr($email, '@', true); // A

例如,给定代码:

if(strstr($key, ".")){
    // do something
}
strstr返回字符串,如何将其用作布尔值?它是如何变成真的还是假的

下面是一个例子

 <?php
 $email  = 'name@example.com';
 $domain = strstr($email, '@');
 echo $domain; // prints @example.com

 $user = strstr($email, '@', true); // As of PHP 5.3.0
 echo $user; // prints name
 ?>
string
--->必需。指定要搜索的字符串

搜索
--->必需。指定要搜索的字符串。如果此参数是一个数字,它将搜索与该数字的ASCII值匹配的字符。

引用自:

返回字符串的部分,如果未找到指针,则返回FALSE

所以布尔检查基本上是,是否找到子字符串(本例中的


此函数可以返回的任何其他值都是一个非空字符串,它将被计算为truthy(请参见文档)。这很简单:在if语句中,当我们有一个空值(例如非空字符串)时,这是真的。例如:

if("test") { //this is true
}

$value = "test";
if($value) { //this is true
}


$value = 3;
if($value) { //this is true
}
$var = 0;
if($var) { //this is false
}

$var = false;
if($var) { //this is false
}

$var = "";
if($var) { //this is false
}
另一方面,当您有一个空变量时,在if语句中,它的行为类似于false。例如:

if("test") { //this is true
}

$value = "test";
if($value) { //this is true
}


$value = 3;
if($value) { //this is true
}
$var = 0;
if($var) { //this is false
}

$var = false;
if($var) { //this is false
}

$var = "";
if($var) { //this is false
}
因此,在您的情况下,您有:

$key = "test.com"
$val = strstr($key, "."); //Return ".com" 

if ($val) { //This is not a non empty string so it is true
}

$key = "justtest"
$val = strstr($key, "."); //Return boolean false so it is false

if ($val) { //This is returning boolean false
}

strstr的返回要么是布尔值(false),要么是字符串,然后

$strstr = strstr($key, '.');
if(is_string($strstr)){
 echo 'is found';
}

or 

if($strstr === false){
 echo 'not found';
}
注意:也可以使用is_bool($strtsr),因为字符串不会被转换为bool(true)


返回字符串部分,如果找不到指针,则返回FALSE。
因此,如果结果不为FALSE,则表示结果为TRUE(如truish,但不是boolean)。基本上是检查非FALSE值,如果在这种情况下没有“.”则返回?有意思。。这有文件记录吗?因为我认为这个方法返回的是字符串而不是布尔值?谢谢。但如果它返回字符串的部分,这是怎么回事?@KorayTugay编辑。基本上,在
if
-子句中,所有不为false、0或空的内容都被计算为true。似乎没有回答这个问题,我没有看到任何涉及“布尔”部分的内容?