【问题标题】:PHP Identical Comparison Operator combined with Assignment Operator [duplicate]PHP相同的比较运算符与赋值运算符相结合[重复]
【发布时间】:2023-04-08 08:59:01
【问题描述】:

以下代码来自 Symfony 2,输入字符串 'folder/file.exe',将输出 'file.exe'。

protected function getName($name)
{
    $originalName = str_replace('\\', '/', $name);
    $pos = strrpos($originalName, '/');
    $originalName = false === $pos ? $originalName : substr($originalName, $pos + 1);

    return $originalName;
}

但是,除了以下代码结构,我什么都能理解:

    $var = false === 'something';

谁能给我解释一下?谢谢!

编辑:感谢大家的帮助,也许下面的代码比上面的代码更清晰:

    $originalName = ((false === $pos) ? $originalName : substr($originalName, $pos + 1));

【问题讨论】:

    标签: php operators ternary-operator


    【解决方案1】:
    $originalName = false === $pos ? $originalName : substr($originalName, $pos + 1);
    

    以上过程的展开:

    if($pos === false) {
       $originalName = $originalName;
    } else {
       $originalName = substr($originalName, $pos + 1);
    }
    

    或者

    if($pos !== false) {
       $originalName = substr($originalName, $pos + 1);
    }
    

    【讨论】:

      【解决方案2】:

      if else 条件的简写形式

      if($a == 1) {
          $value = 1;  
      } else {
          $value = 2;
      }
      

      同样的事情

      $value = $a==1 ? 1 : 2;
      

      【讨论】:

        【解决方案3】:

        http://www.php.net/manual/en/language.operators.comparison.php

        === 也仅在类型(字符串、int 等)相同时才返回 true

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-11-21
          • 2011-11-16
          • 2011-03-13
          • 2018-03-08
          • 2014-05-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多