Я просто просматривал форум, а кто-то спрашивал о файле PHP, который они нашли в Интернете. В коде есть несколько таких мест:
if ($REMOTE_ADDR == "") $ip = "no ip"; else $ip = getHostByAddr($REMOTE_ADDR);
Я всегда думал, что скобки необходимы, чтобы заключить, что вы хотите сделать, если условие истинно. Есть ли другая альтернатива, например, если она находится на той же линии, что и вы?
Существует и другая строка: if ($action != ""): mail("$adminaddress","Visitor Comment from YOUR SITE",
Мой инстинкт – сказать, что это не сработает, но я также не знаю, устарел ли он файл PHP, и он работал?
вы можете сделать, если еще такие утверждения:
<?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's 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; ?>
Чтобы перейти к более подробному описанию, причина, по которой фигурные скобки необязательны, заключается в том, что синтаксис выглядит следующим образом:
if(CONDITION) BLOCK [elseif(CONDITION) BLOCK] [else BLOCK]
БЛОК может быть единственным заявлением:
foo();
или это может быть группа заявлений, заключенная в скобки:
{ foo(); bar(); }
по моему мнению
if ($REMOTE_ADDR == "") $ip = "no ip"; else $ip = getHostByAddr($REMOTE_ADDR);
действительно, но гораздо труднее читать, чем:
if ($REMOTE_ADDR == "") { $ip = "no ip"; } else { $ip = getHostByAddr($REMOTE_ADDR); }
Скобки (а не скобки) являются необязательными в PHP, как и в большинстве синтаксисов типа C. Может быть, вы думаете о Perl; они требуются там для этой формы синтаксиса.
Двоеточие – это альтернативная форма структуры управления, поддерживаемая PHP. Я ненавижу это, но некоторые люди (особенно дизайнеры систем шаблонов, по-видимому) любят это.
Да, исключая брекеты, разрешено, хотя много раз я слышал 2 причины не использовать этот синтаксис:
Кроме того, да, синтаксис двоеточия действителен. Альтернативы можно найти здесь: http://php.net/manual/en/control-structures.alternative-syntax.php
brackets are needed to enclose what you want to do if the condition is true
Я не могу придумать какой-либо язык, требующий этого