Каковы различные способы написания, если условные выражения используют PHP?
Я знаю, например, следующее
if($test == 1){ }else{ }
а также
if($test == 1) echo 'asdsa'; else echo 'sdaaa';
Существует альтернативный синтаксис структуры управления :
if ($text == 1): echo 'asdsa'; else: echo 'asdsa'; endif;
Другой способ – использовать тернарный оператор . Пример в документации PHP:
<?php // Example usage for: Ternary Operator $action = (empty($_POST['action'])) ? 'default' : $_POST['action']; // The above is identical to this if/else statement if (empty($_POST['action'])) { $action = 'default'; } else { $action = $_POST['action']; } ?>
Другие структуры управления также описаны в руководстве по PHP . Единственными условными утверждениями являются тернарный условный оператор, if
(и else
), а elseif
или else if
. Однако они имеют альтернативный синтаксис .
echo ($test == 1) ? 'asdsa' : 'sdaaa';
Помимо того, что уже было сказано, есть такие вещи, как
$sql_link = mysql_connect('localhost', 'root') or die('no mysql');
Или как альтернативный синтаксис для структур управления
(присваивание «ИЛИ» – это трюк :), если mysql_connect () не evaulate к true, PHP попытается оценить второе выражение, так что это действительно взломать:
if (mysql_connect('localhost', 'root')) { $sql_link = true; } else { die('no mysql'); }
)
Стандартная инструкция if:
if(expression) { // code } elseif(expression) { // code } else { // code }
Без привязок для отдельных строк кода после каждого утверждения:
if(expression) // single line of code elseif(expression) // single line of code else // single line of code
Синтаксис альтернативного управления:
if(expression): // code elseif(expression): // code else: // code endif;
И, наконец, троичный оператор:
(expression ? expression_if_true : expression_if_false);
Который также может быть записан как:
(expression) ? expression_if_true : expression_if_false;
Или без скобок, если хотите.
Не забывайте, что «Условная сложность» – это запах кода. Полиморфизм – ваш друг.
Условная логика невинна в зачаточном состоянии, когда ее легко понять и содержать в нескольких строках кода. К сожалению, он редко стареет. Вы реализуете несколько новых функций, и вдруг ваша условная логика становится сложной и экспансивной. [Джошуа Керевский: Рефакторинг для шаблонов]
Одна из самых простых вещей, которую вы можете сделать, чтобы избежать вложенных блоков, чтобы научиться использовать Оговорки о безопасности . (Примечание: это не синтаксис PHP. Рассматривайте его как псевдокод. Приемы здесь важны.)
double getPayAmount() { if (_isDead) return deadAmount(); if (_isSeparated) return separatedAmount(); if (_isRetired) return retiredAmount(); return normalPayAmount(); };
Другая вещь, которую я нашел, упрощает все, что делает ваш код самодокументированным, – это условные условные обозначения.
double disabilityAmount() { if (isNotEligableForDisability()) return 0; // compute the disability amount
Другие ценные методы рефакторинга , связанные с условными выражениями, включают Decompose Conditional , Replace Conditional with Visitor и Converse Converse .
Теперь, когда у вас есть новые молотки, не позволяйте всему выглядеть как гвоздь!
if($test == 1){ }else{ } # can only be used if performing 1 line of code after statement if($test == 1) echo 'asdsa'; else echo 'sdaaa'; #you can have as many elseif as you like (but you may wish to check out switch see below: if($test == 1){ }elseif{ }else{ }
Также взгляните на переключатель () http://php.net/manual/en/control-structures.switch.php
switch($test) { case "1" : break; case "2" : break; default : break; }
Прямо из руководства PHP :
<?php if ($a == 5): echo "a equals 5"; echo "..."; elseif ($a == 6): echo "a equals 6"; echo "!!!"; else: echo "a is neither 5 nor 6"; endif; ?>