3

例如给定代码:

if(strstr($key, ".")){
    // do something
}

strstr 返回一个字符串,如何将其用作布尔值?它是如何变成真或假的?

4

4 回答 4

2

这是一个例子

 <?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
 ?>

定义:

strstr()函数在另一个字符串中搜索第一次出现的字符串。此函数返回字符串的其余部分(从匹配点开始),如果未找到要搜索的字符串,则返回 FALSE。

    strstr(string,search)

string----> 必填。指定要搜索的字符串

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

于 2013-02-03T20:35:06.223 回答
1

引用PHP 文档

返回字符串的一部分,如果没有找到 needle,则返回 FALSE。

所以布尔检查基本上是,是否.找到了子字符串(在这种情况下)。

此函数可以返回的任何其他值都是非空字符串,它将被评估为真(请参阅文档中的此条目。)

于 2013-02-03T20:35:50.343 回答
1

这很简单:在 if 语句中,当我们有一个空值(例如非空字符串)时,这是真的。例如:

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

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


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

另一方面,当您有一个空变量时,在 if 语句中它的行为就像 false。例如:

$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
}
于 2013-02-03T20:45:25.510 回答
1

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

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

or 

if($strstr === false){
 echo 'not found';
}

注意: is_bool($strtsr) 也可以使用,因为字符串不会被强制转换为 bool (true)

echo is_bool('test') ? 'true' : 'false'; //false
于 2013-02-03T20:46:40.267 回答