Verification: a143cc29221c9be0

Null coalescing assignment operator php

Тернарный и тернарный оператор объединения в PHP • PHP.Watch

PHP поддерживает различные формы тернарных операторов и операторов объединения. Это быстрый пост для ознакомления со всеми тройными операторами и операторами объединения, поддерживаемыми в PHP.

Тернарный оператор — это краткая форма блока if / else , каждый из которых выполняет ровно одно выражение.

  if ($ mark> = 50) {
    $ rank = 'пройти';
}
еще {
    $ rank = 'провал';
}  

Блок if / else выше довольно подробный и занимает больше места для простого выражения.С помощью тернарного оператора вы можете оптимизировать это:

  - если ($ mark> = 50) {
- $ rank = 'пройти';
-}
- еще {
- $ rank = 'провал';
-}
+ $ ранг = $ оценок> = 50? 'пройден': 'не пройден';  

Его синтаксис следующий:

  результат = условие? выражение-если-истина: выражение-если-ложь  

PHP выполнит условие условие условие, и если оно оценивается как «истинное» значение (та же семантика, что и условие if () ), используется значение из выражение-если-истина .Если условие оценивается как ложное, будет использоваться значение из выражение-если-ложь .

Идеальным вариантом использования тернарного оператора были бы присвоения, которые могут иметь два значения.

Начиная с PHP 8.0+, вы также можете выбросить исключение из тернарного оператора.

Некоторые выражения тернарного оператора можно упростить. Рассмотрим следующее троичное выражение:

  $ user = load_user ()? load_user (): ложь;  

Если условное выражение такое же, как и истинное выражение, его можно еще уменьшить:

  - $ user = load_user ()? load_user (): ложь;
+ $ user = load_user ()?: false;  

Если функция load_user () возвращает ложное значение, $ пользователю будет присвоено false .В противном случае будет присвоено возвращаемое значение load_user () .

Его синтаксис:

  результат = условие?: Выражение-если-ложь  

Условие cond будет оцениваться, как если бы оно находилось в блоке if () , и возвращаемое значение будет присвоено результату result , если это истинное значение. Если это ложное значение (например, 0 , "0" , false , null , [] и т. Д.), Выражение выражение-если-ложь будет оценено, и его возвращаемое значение будет присвоено результату .

Null Coalescing Operator предоставляет сокращение для вызовов isset () . Он часто используется для уменьшения чрезмерных вызовов isset () . Оператор Null Coalescing вызывает isset () для условного выражения, и значение будет возвращено.

  - $ result = isset ($ _ GET ['значение'])? $ _GET ['значение']: 'foo';
+ $ result = $ _GET ['значение'] ?? 'фу';  

Если установлено значение $ _GET ['value'] (которое ведет себя точно так же, как isset () ), $ _GET ['value'] значение будет присвоено $ result .Если он не установлен, или null , foo будет присвоено $ result .

  результат = переменная ?? выражение  

PHP вызывает isset (переменная) , а переменная будет присвоена результату , если установлена ​​переменная . Если он не установлен, будет вычислено выражение , и его значение будет присвоено результату .

Null Coalescing может быть дополнительно сокращен в PHP 7.4, с оператором нулевого слияния присваивания.

  - $ значение = $ значение ?? 'фу';
+ $ значение ?? = 'foo';  

Предупреждение

Будьте внимательны при связывании тернарных операторов / операторов объединения. Теперь необходимо использовать фигурные скобки, чтобы прояснить намерение, если вам абсолютно необходимо использовать тернарные / объединяющие операторы.

Null Coalescing Assignment относительно новый в PHP (добавлен в PHP 7.4), поэтому ваш код может не работать в более старых версиях PHP, если вы решите использовать этот оператор.

Эти операторы являются только синтаксическим сахаром и не обеспечивают существенной разницы в производительности по сравнению со старыми добрыми блоками if / else . Если намерение неясно, рекомендуется использовать блоки if / else , хотя они делают код немного многословным.

Еще более короткие тернарные операторы в PHP с помощью?:

Сегодня я обнаружил кое-что о тернарном операторе PHP, что немного порадовало мою СУХУЮ душу.

Тернарный оператор PHP часто играет ключевую роль в лаконичности vs.ясность аргумента. Краткое напоминание: тернарный оператор PHP позволяет писать однострочные сравнения, заменяя следующий код:

   

с этим:

   

Второй пример кода явно проще и во многих случаях (хотя, конечно, не во всех) он по-прежнему сохраняет достаточно ясности, чтобы быть достойным инструментом.Существует множество споров о том, жертвует ли тернарный оператор ясностью за счет краткости; Скажем так, это инструмент, и, как любой инструмент, его можно использовать хорошо или плохо.

Синтаксис обычного тернарного оператора: (выражение)? значение, если истинно: значение, если ложно . Выражение также может быть простой переменной, которая проверяет, является ли переменная истинной или ложной:

   

Проблема в том, что в приведенном выше примере и обычный , и раздражающе повторяющийся : Необходимость писать $ value дважды, как это, просто кажется неправильным.

Итак, сегодня я обнаружил, что в PHP 5.3 введен еще более сжатый синтаксис для использования тернарного оператора . Вы можете узнать больше в документации, но вот как мы могли бы сделать приведенный выше пример еще более кратким:

   

Если это выглядит знакомо, это потому, что это так: именно так PHP сокращает другие операторы, например, сокращает это:

   

к этому:

   

Для ясности, то, что мы можем сократить , не означает, что мы должны . Но когда мы можем написать краткий код, который является и соответственно понятным, мы должны, и эта функция позволяет нам СУШИТЬ тернарный оператор во многих случаях.

phpmaster | Использование тернарного оператора

Вероятно, вы уже знакомы с оператором PHP if . Он очень похож на свои аналоги во многих других языках программирования и представляет собой одну из самых фундаментальных концепций программирования.Оператор if легко понять и легко освоить. Вероятно, это то, к чему вы привыкли:

   = 10) {
    $ message = "Ты классный чувак!";
}
еще {
    $ message = "Извини, ты не такой крутой!";
}  

Но есть способ развить эту концепцию и в процессе немного увеличить свой $ coolFactor . Позвольте мне познакомить вас с тернарным оператором, который служит сокращенной записью для операторов , если .

Знакомство с тернарным оператором

Состоящий из трех частей, тернарный оператор использует три выражения, разделенных вопросительным знаком и двоеточием. Знак вопроса следует за тестовым выражением, и его можно представить как вопрос: «Ну, это правда?» Затем двоеточие разделяет ваши два возможных значения, первое из которых будет выбрано, если тестовое выражение истинно, а второе, если тестовое выражение ложно. Наблюдать:

   = 10)? "Ты крутой чувак!" : «Извини, ты не такой крутой!»;  

Одно из моих любимых применений тернарного оператора - проверить, установлено ли значение, и, если нет, установить для переменной значение по умолчанию.

   

Если параметр цвета был передан в сценарий из URL-адреса, его значение присваивается $ favouriteColor . Если это не так, вместо него назначается значение по умолчанию «розовый».

Начиная с PHP 5.3, тернарные операторы можно сокращать еще больше, исключая среднее выражение. Если тестовое выражение оценивается как истина в логическом контексте, возвращается его значение.В противном случае вместо этого возвращается альтернатива.

   

Но с большим хладнокровием приходит большая ответственность! Правильное использование тернарного оператора может привести к более чистому коду; злоупотребление тернарным оператором может все испортить. Никогда не жертвуйте удобочитаемостью или ремонтопригодностью вашего кода, чтобы добавить немного яркости.

Не злоупотребляйте!

Прежде чем использовать тернарный оператор, вы должны рассмотреть сложность ситуации.Избегайте вложения или штабелирования операций, даже если вам удобно ими пользоваться, поскольку это может привести к очень запутанному коду и неинтуитивным результатам. По-прежнему лучше использовать утверждения , если для сложных ситуаций. Прежде всего, будьте добры к следующему парню и постарайтесь, чтобы ваш код был чистым и легким для понимания.

Также нет ничего необычного в том, чтобы разделить троичные выражения на несколько строк. Как и в большинстве случаев в программировании, существует множество вариантов использования пробелов для улучшения читаемости кода.

   

Как всегда, удобочитаемость должна быть ключевым моментом.

Сводка

Тернарный оператор поначалу может показаться немного странным, но для его освоения требуется совсем немного усилий, и его очень легко объяснить другим, кто, возможно, будет поддерживать ваш код в будущем. Немного попрактиковавшись, вы сможете придать своему PHP-коду дополнительную дозу удивительного и избавиться от небольшого замешательства в своей жизни.

Изображение предоставлено Арманом Зендером / Shutterstock

Тернарный оператор PHP

Резюме : в этом руководстве вы узнаете, как использовать тройной оператор PHP, чтобы сделать код короче и читабельнее.

Введение в тернарный оператор PHP

Тернарный оператор является сокращением для оператора if else . Вместо того, чтобы писать это:

   Язык кода: HTML, XML (xml)  

вы можете использовать это:

 

$ result = condition? значение1: значение2;

Язык кода: PHP (php)

Как это работает.

  • Первый. PHP оценивает условие . Если это правда, правое выражение возвращает значение1 ; в противном случае возвращается значение 2 .
  • Во-вторых, PHP присваивает результат правого выражения переменной $ result .

Название тернарного оператора связано с тем, что для этого оператора требуются три операнда: выражение , значение1 , значение2 .

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

PHP Пример тернарного оператора

Предположим, вы хотите отобразить ссылку для входа, если пользователь не вошел в систему, и ссылку для выхода, если пользователь уже вошел в систему. .Для этого вы можете использовать оператор if else следующим образом:

   Язык кода: HTML, XML (xml)  

В этом примере $ title будет иметь значение «Login», потому что $ is_user_logged_in имеет значение false . Код довольно подробный. И вы можете сделать его короче, используя тернарный оператор следующим образом:

   Язык кода: HTML, XML (xml)  

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

   Язык кода: HTML, XML (xml)  

Сокращенный тернарный оператор

Начиная с PHP 5.3, вы можете использовать сокращенный тернарный оператор следующим образом:

 

$ result = $ initial?: $ Default;

Язык кода: PHP (php)

PHP вычисляет $ intial в логическом контексте.Если $ initial истинно, PHP присваивает значение $ initial результату $. В противном случае он присваивает $ result значение $ default.

В следующем примере сокращенный тернарный оператор используется для присвоения значения $ path URL $ url , если $ path не является ложным (или пустым). Если путь $ пуст, он присваивает буквальную строку ‘/’ URL-адресу $ :

   Язык кода: HTML, XML (xml)  

Вывод:

 

/ около

Объединение тернарных операторов

Технически вы можете связать троичные операторы в цепочку, используя круглые скобки.

Предположим, вы хотите отображать различные сообщения, если пользователи имеют право и имеют достаточно средств. Следующий пример связывает два тернарных оператора:

   Язык кода: HTML, XML (xml)  

Когда объединение тернарных операторов делает код нечитаемым, лучше использовать if else или if elseif оператор .

Сводка

  • Тернарный оператор (?: ) является сокращением для оператора if else .
  • Используйте тернарный оператор, если он делает ваш код короче и читабельнее.

Вы нашли это руководство полезным?