константы — троичную PHP определить?

Может кто-нибудь объяснить, как это определение работает:

define( 'A_DEFINE', B_VALUE ? 'yes' : 'no' );

Кажется, там есть троичная операторная структура, но не совсем понятно, как все это объединить.

-2

Решение

В PHP неопределенные константы оцениваются как true. От PHP ручная документация:

Если вы используете неопределенную константу, PHP предполагает, что вы имеете в виду имя самой константы, как если бы вы называли ее как строку (CONSTANT против "CONSTANT"). Ошибка уровня E_NOTICE будет выдан, когда это произойдет.

У тебя есть:

define( 'A_DEFINE', B_VALUE ? 'yes' : 'no' );

Итак, в приведенном выше заявлении, это то, что происходит. Если B_VALUE оценивается как true (что происходит, потому что он не инициализирован), установите значение A_CONSTANT в yesиначе установите его на no,

define('A_DEFINE', B_VALUE ? 'yes' : 'no' );
var_dump(B_VALUE, A_DEFINE); // Just checking what the outputs are

Вышеуказанные выводы:

string(7) "B_VALUE"string(3) "yes"
3

Другие решения

Предполагая, что B_VALUE имеет логическое значение, это будет означать, что если B_VALUE равно true
тогда A_DEFINE становится «да», иначе становится «нет».

Например

$a = $b ? "yes" : "no";

Такой же как

if ($b == true) {

$a = "yes";

} else {

$a = "no";

}

Ternary — это просто более читаемый и очень быстрый способ сделать это.

Надеюсь это поможет!

0