【问题标题】:Change ternary-operator into if statement将三元运算符改为 if 语句
【发布时间】:2018-12-26 10:25:32
【问题描述】:

嗨,在互联网上的一段代码中,我找到了我想使用的东西,但其中有一个问号作为 if/else 语句。我想更换?在我的代码中使用 if/else 语句。

  $median = (count($athleticsArr) % 2 == 0) 
            ? (($athleticsArr[(count($athleticsArr) / 2) - 1] + $athleticsArr[(count($athleticsArr) / 2)]) / 2) 
            : ($athleticsArr[floor(count($athleticsArr) / 2)]);

【问题讨论】:

  • 为什么,它是一个完全正常的三元运算符
  • 是的,但就我自己的观点而言,我更喜欢使用 if 语句来更好地理解代码
  • 所以去改吧
  • @DeonaSecreve if(something) { doA(); } else { doB(); } => something ? doA() : doB(); 现在只需将其应用于您的代码。
  • 这里没有问题。看起来你什么都没试过。如果您不先尝试,我们将无法修复您的代码。你应该做的(我没有看到其他答案显示这个建议)缓存count($athleticsArr),这样你就不会对相同的值进行冗余调用。

标签: php if-statement ternary-operator


【解决方案1】:

这是一个采用一些最佳实践的 sn-p,例如只调用一次函数。它还使用“按位比较”& 1 来确定计数是否为奇数。我们都假设您的数组值已经排序。

代码:(Demo)

$array = [1,3,4,7,11,16,19,21];   // output: 9
// $array = [1,3,4,7,11,16,19];   // output: 7

$count = sizeof($array);   // cache the count
$index = floor($count/2);  // cache the index
if (!$count) {
    echo "no values";
} elseif ($count & 1) {    // count is odd
    echo $array[$index];
} else {                   // count is even
    echo ($array[$index-1] + $array[$index]) / 2;
}

*当然你把你的$median =换成我的echo所在的位置。

【讨论】:

    【解决方案2】:
    <?php
    if(count($athleticsArr) % 2 == 0)){
        $median = (($athleticsArr[(count($athleticsArr) / 2) - 1] + $athleticsArr[(count($athleticsArr) / 2)]) / 2);
          }else{
        $median = ($athleticsArr[floor(count($athleticsArr) / 2)]);
         }
    ?>
    

    当你看到三元运算符时,你可以将它分成 3 个部分,它是 condition?yes:no

    ? 用于if 语句,: 用于else 语句,尝试做一两个简单的事情,你肯定会得到它

    【讨论】:

      【解决方案3】:

      使用此代码:

      <?php
      if (count($athleticsArr) % 2 == 0) {
          $median=(($athleticsArr[(count($athleticsArr) / 2) - 1] + $athleticsArr[(count($athleticsArr) / 2)]) / 2);
      } else{
          $median=($athleticsArr[floor(count($athleticsArr) / 2)]);
      }
      ?>
      

      要这样做,你应该遵循这个:

      $variable=condition ? DoIf : DoElse; = if(condition){DoIf}else{DoElse}

      【讨论】:

        猜你喜欢
        • 2020-02-14
        • 1970-01-01
        • 2021-07-09
        • 1970-01-01
        • 1970-01-01
        • 2020-09-23
        • 2012-02-12
        • 2013-07-01
        • 1970-01-01
        相关资源
        最近更新 更多