Что это за двоеточие внутри инструкции foreach для php?


Ладно, я официально в замешательстве. Я читаю это вступление MVC на php и вижу этот код, и я добавил некоторые элементы в массив сверху, чтобы посмотреть, действительно ли это работает.

  <?php 
 $members  = array('apple', 'oranges', 'banana');
  ?>

<html>
<h1>Members of community.com:</h1>
<ul>
<?php foreach ($members as $i => $member) : ?>
<li>Member #<?php echo $i + 1; ?>: <?php echo $member; ?></li>
 <?php endforeach; ?>
 </ul>
</html>

Я заметил, что в строке оператора foreach есть:. Откуда это взялось? Что еще более важно, что это такое? Это: символ означает "хорошо, мы продолжим это утверждение в следующей строке"?

Но кроме того, это классный трюк, которому я научился. Меньше html-тегов внутри моего php-эха я догадываться.

Дайте мне знать, что вы думаете, спасибо!

Author: Matt, 2011-07-04

2 answers

Это "Альтернативный синтаксис для управляющих структур"... см. http://ru2.php.net/manual/en/control-structures.alternative-syntax.php и http://www.php.net/manual/en/control-structures.foreach.php#82511.

Он в основном используется в коде представления, на который могут обратить внимание дизайнеры, потому что считается, что его легче понять непрограммистам. Я настоятельно рекомендую не использовать его, так как он действительно ничего не предлагает по сравнению с прокомментированным набором фигурных скобок и множеством IDE не играй с этим по-хорошему. Если ваш код может когда-либо понадобиться для просмотра другими, лучше всего писать код без использования альтернативного синтаксиса.

foreach ($setOfItems as $item):
    //do something
endforeach;

Лучше представить как...

foreach ($setOfItems as $item) {
    //do something
} // end ($setOfItems as $item) foreach

После того, как вы начнете вложивать структуры нескольких наборов, которые заканчиваются конечной структурой; вместо фигурной скобки затем прокомментированные фигурные скобки дают более подробное описание того, какой блок завершается. Вы, конечно, можете прокомментировать конечную структуру; синтаксис, но у вас все еще есть проблема, с которой многие IDE не смогут соответствовать они для тебя.

 8
Author: Night Owl, 2011-07-04 04:57:01

Это означает, что foreach будет продолжаться до тех пор, пока не достигнет endforeach. Это альтернативный синтаксис для {}.

См. http://www.php.net/manual/en/control-structures.foreach.php#82511

 8
Author: Brad, 2011-07-04 04:02:31