Требуются условные обозначения PHP, скобки?

Я просто просматривал форум, а кто-то спросил о файле PHP, который они нашли в Интернете. В коде есть несколько таких пятен:

if ($REMOTE_ADDR == "") $ip = "no ip"; else $ip = getHostByAddr($REMOTE_ADDR);

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

Существует и другая строка: if ($action != ""): mail("$adminaddress","Visitor Comment from YOUR SITE",

Мой инстинкт - сказать, что это не сработает, но я также не знаю, устарел ли он файл PHP, и он работал?

Ответ 1

вы можете сделать, если else такие выражения:

<?php
if ($something) {
   echo 'one conditional line of code';
   echo 'another conditional line of code';
}


if ($something) echo 'one conditional line of code';

if ($something)
echo 'one conditional line of code';
echo 'a NON-conditional line of code'; // this line gets executed regardless of the value of $something
?>



а затем вы можете также записать if-else в альтернативном синтаксисе:

<?php
if ($something):
   echo 'one conditional line of code';
   echo 'another conditional line of code';
elseif ($somethingElse):
   echo 'one conditional line of code';
   echo 'another conditional line of code';
else:
   echo 'one conditional line of code';
   echo 'another conditional line of code';
endif;
?>



с альтернативным синтаксисом вы также можете выпасть из режима синтаксического анализа следующим образом:

<?php
if ($something):
?>
one conditional line of code<br />
another conditional line of code
<?php
else:
   echo "it value was: $value<br />\n";
?>
another conditional line of code
<?php
endif;
?>

Но это действительно очень грязно, и я не буду рекомендовать его использовать (кроме, возможно, для шаблона-логики).



и сделать его полным:

<?php
$result = $something ? 'something was true' : 'something was false';
echo $result;
?>

equals

<?php
if ($something) {
   $result = 'something was true';
} else {
   $result = 'something was false';
}
echo $result;
?>

Ответ 2

Чтобы перейти к более подробному описанию, причина, по которой фигурные скобки необязательны, заключается в том, что синтаксис выглядит следующим образом:

if(CONDITION) BLOCK
[elseif(CONDITION) BLOCK]
[else BLOCK]

BLOCK может быть единственным выражением:

foo();

или это может быть группа операторов, заключенная в фигурные скобки:

{
    foo();
    bar();
}

Ответ 3

По-моему

if ($REMOTE_ADDR == "") $ip = "no ip"; else $ip = getHostByAddr($REMOTE_ADDR);

действителен, но гораздо труднее читать, чем:

if ($REMOTE_ADDR == "") {
    $ip = "no ip"; 
} else {
    $ip = getHostByAddr($REMOTE_ADDR);
}

Ответ 4

Скобки (не скобки) необязательны в PHP, как и в большинстве синтаксисов типа C. Может быть, вы думаете о Perl; они требуются там для этой формы синтаксиса.

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

Ответ 5

Да, исключая скобки, разрешено, хотя много раз я слышал 2 причины не использовать этот синтаксис:

  • Труднее читать. Менее очевидно для другого программиста.
  • Если вы когда-нибудь захотите добавить что-то внутри if, тогда вам нужно добавить фигурные скобки, которые сложнее после этого, когда вы начинаете кодирование, поскольку большинство редакторов добавит вам закрывающую фигуру.

Кроме того, да, синтаксис двоеточия действителен. Альтернативы можно найти здесь: http://php.net/manual/en/control-structures.alternative-syntax.php

Ответ 6

brackets are needed to enclose what you want to do if the condition is true

Я не могу думать ни о каком языке, который требует этого