【问题标题】:What does it mean in php to use strstr as a boolean check?在 php 中使用 strstr 作为布尔检查是什么意思?
【发布时间】:2013-02-03 20:33:42
【问题描述】:

例如给定的代码:

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

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

【问题讨论】:

  • Returns the portion of string, or FALSE if needle is not found. 所以,如果结果不是 FALSE,则意味着它是 TRUE(不过,与布尔值不同。)基本上是检查 NON-FALSE 值
  • 如果没有“.”则返回在这个情况下?有趣.. 这有记录吗?因为我认为这个方法返回的是一个字符串而不是布尔值?

标签: php boolean strstr


【解决方案1】:

这是一个例子

 <?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值匹配的字符。

【讨论】:

  • 似乎没有回答我没有看到任何关于“布尔”部分的问题?
【解决方案2】:

引用the PHP docu:

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

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

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

【讨论】:

  • 谢谢。但是如果它返回字符串的一部分,这是怎么回事?
  • @KorayTugay 已编辑。基本上,在if-clause 中,所有不为假、0 或空的东西都被评估为真。
【解决方案3】:

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

【讨论】:

    【解决方案4】:

    这很简单:在 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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-24
      • 1970-01-01
      • 1970-01-01
      • 2013-05-30
      • 2011-01-02
      • 1970-01-01
      • 2018-11-29
      相关资源
      最近更新 更多