Что означает ":" в PHP?

Возможный дубликат: что такое ":" в PHP?

Что это : имеется в виду следующий код PHP?

<?php
    while (have_posts()) : the_post();
?>

7 ответов

Решение

Это называется альтернативным синтаксисом для структур управления. Вы должны иметь endwhile; где-то после этого. В основном, это позволяет вам опустить скобки {} от того, чтобы это выглядело "красивее"...

Что касается вашего редактирования, он называется " Тернарный оператор" (это третий раздел). По сути, это условное обозначение.

$foo = $first ? $second : $third;

это то же самое, что сказать (просто короче):

if ($first) {
    $foo = $second;
} else {
    $foo = $third;
}

В документации приведен пример while это объясняет синтаксис:

Как и в случае с оператором if, вы можете сгруппировать несколько операторов в одном цикле while, окружив группу операторов фигурными скобками или используя альтернативный синтаксис:

while (expr):
    statement
    ...
endwhile;

Ответ здесь объясняет это так:

Этот оператор (:) в основном используется во встроенном кодировании php и html.

Используя этот оператор, вы можете избежать использования фигурных скобок. Этот оператор уменьшает сложность во встроенном кодировании. Вы можете использовать этот оператор (:) с if, while, for, foreach и другими...

Без (:) оператора

<body>
<?php if(true){ ?>
<span>This is just test</span>
<?php } ?>
</body>

С оператором (:)

<body>
<?php if(true): ?>
<span>This is just test</span>
<?php endif; ?>
</body>

Это как:

<?php
while(have_posts()) {
    the_post();
}
?>

Эта нотация позволяет избежать использования фигурных скобок - обычно при встраивании PHP в HTML - и эквивалентна:

while (have_posts())
{
    the_post();
}

Это говорит в то время как have_posts() является true бежать the_post(),

while (expression is true : code is executed if expression is true)
while(expression = true) : run some code ;
Другие вопросы по тегам