PHP-使嵌套if语句输出更短

时间:2018-09-14 10:07:17

标签: php if-statement

我经常会遇到以下类似情况:

<?php
foreach($items as $item) {
  if($item['key']) {
    echo 'Alright';

    if($item['value']) {
      echo 'Inside';
    } else {
      $output[] = [
        $item['data1'],
        $item['data2'],
      ];
    }
  } else {
    $output[] = [
      $item['data1'],
      $item['data2'],
    ];
  }
}

print_r($output);

如您所见,我使用嵌套的if语句。让我讨厌的是,我在两个else中都具有相同的输出。我希望保持干燥。

因此,如果我在foreach中任何地方的else语句中,我都希望输出相同的结果。

更新

我的真实代码要复杂一些。

foreach($out as $i => $data) {
  $dayshort = mb_substr($data[0], 0, 3);

  if(isset($out[$i+1][0])) {
      $future = $out[$i+1][0];

      $daykey = array_search($data[0], $weekdays);
      $nextday = $weekdays[$daykey + 1];

      if($nextday != $future) {
          $backkey = array_search($future, $weekdays) - 1;
          $backname = mb_substr($weekdays[$backkey], 0, 3);

          $final[] = [
              $dayshort . ' - ' . $backname,
              $data[1],
              $data[2]
          ];
      } else {
          $final[] = [
              $data[0],
              $data[1],
              $data[2]
          ];
      }
  } else {
      $final[] = [
          $data[0],
          $data[1],
          $data[2]
      ];
  }
}

现在,我在此处使用完整代码https://github.com/jenstornell/daybreaker

设置了一个仓库

1 个答案:

答案 0 :(得分:0)

我认为它更简单

<?php
foreach($items as $item) {
  if($item['key']) {
    echo 'Alright';

    if($item['value'])
      echo 'Inside';
  }
  $output[] = [
    $item['data1'],
    $item['data2'],
  ];
}