vs. Foreach有客观差异吗?

时间:2018-06-27 17:48:09

标签: php for-loop foreach while-loop

我试图了解while和for每个之间的区别。这两个示例都可以使用,似乎唯一真正的区别是首选项。也许是在这种情况下,但是在他们的情况下,一个人比另一个人客观上要好吗?

var myWindow = window.open("", '_blank');
if (myWindow != undefined) {
  window.setTimeout(function() {
    myWindow.document.write(text);
    myWindow.focus();
    myWindow.document.title = name;
  }, 100);
} else {
  showWarning({
      message: 'popup is blocked')
  });
} // here

VS。

<?php $rows = get_field('repeater_field_name');
if($rows)
    {
    echo '<ul>';
    foreach($rows as $row)
    {
        echo '<li>sub_field_1 = ' . $row['sub_field_1'] . ', sub_field_2 = ' . $row['sub_field_2'] .', etc</li>';
    }
    echo '</ul>';
} ?>

2 个答案:

答案 0 :(得分:2)

两者都是循环构造,正如您所提到的,偏好是选择的主要原因之一。但有时以一种格式比另一种格式更容易思考。

例如如果我们想不停地运行循环并根据某种条件中断循环,那么那将是一个更具表现力和可读性的选择。

while (true) {
  if condition {
    break;
  }
}

另外,当我们想逐行读取文件直到文件结尾时,占主导地位:

while (($line = fgets($handle)) !== false) {
}

但有时for或foreach占主导地位,例如遍历一组记录/列表。

foreach (records as key => value) {
}

另一方面,当底层循环源即将在循环内更改时,“ while”比“ for”更可取。

答案 1 :(得分:0)

这个问题讨论很多,这是著名的答案。

https://stackoverflow.com/a/12847533/4553685

此外,我将此问题重复进行