Условия PHP, скобки нужны?

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

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

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

Есть еще такая строчка: if ($action != ""): mail("$adminaddress","Visitor Comment from YOUR SITE",

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
33
0
26 897
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

Ответ принят как подходящий

вы можете использовать такие инструкции if 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'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;
?>

Ого, я не знал, что существует так много вариантов структурирования php-кода. Спасибо!

Levi 19.12.2008 18:37

В последнем примере дополнительная переменная не нужна: echo $ something? «что-то было правдой»: «что-то было ложью»;

Darryl Hein 19.12.2008 18:40

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

Jacco 19.12.2008 18:46

Не могли бы вы также использовать elseif для одной строки такого условного кода? if ($ something) $ result = 'что-то было правдой'; elseif ($ something_else) $ result = 'что-то еще было правдой'; else $ result = 'ничего не правда';

Adal 23.02.2015 03:16

Может ли "elseif" оставить условие if пустым? (т.е. работает ли "elseif:"?)

AkiEru 23.02.2015 11:48

обратите внимание, что удобнее делать отступ для одной условной строки кода

Reign.85 10.04.2015 15:02

вам нужно объяснить или добавить блок: elseif (CONDITION) ..., как следующий ответ, .... потому что второй блок вашего кода не имеет условия и не указывает, зачем использовать какое-то описание или часть кода: if (): {echos } elseif: {echos} else:

user1817927 26.05.2015 19:11

Мне нравится синтаксис «двоеточие», он действительно похож на питон, и мне гораздо легче его читать с помощью кода с правильным отступом. Досрочное закрытие скобок - более распространенная ошибка, по крайней мере для меня, чем забвение endif.

DDS 20.08.2019 17:48

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

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

Спасибо, должно быть, я сначала изучил Perl, и, должно быть, более строгая сторона меня считала, что это неправильно.

Levi 19.12.2008 18:36

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

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);
}

Мне нравится if (statement) process; else process2;, все на отдельных строчках. Он выглядит так же, как и со скобками, за исключением скобок.

JVE999 24.07.2014 08:00
brackets are needed to enclose what you want to do if the condition is true

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

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

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

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

--- 1. Сложнее читать. Менее очевидно для другого программиста. Это спорно. Многим программистам нравится «впитывать» больше кода с меньшей вертикальной прокруткой (я не говорю, что вам нужно писать несколько инструкций ;;; в одной строке). Таким образом вы можете лучше увидеть «большую картину». Но согласен, для режима отладки всегда лучше.

PatlaDJ 22.12.2012 16:27

Прошло 9 лет, и я удивлен, что никто не упомянул тернарный оператор:

$ip = ($REMOTE_ADDR == "") ? "no ip" : getHostByAddr($REMOTE_ADDR);

Гораздо яснее для присвоения IMHO - потому что это приводит к присвоению переменной, как и для обычного назначения переменной.

Ответ @ Jacco предоставляет этот пример.

SQueryL 20.12.2018 21:03

Другие вопросы по теме