Я хотел бы сначала проверить, является ли переменная нулевой или нет, если она равна нулю, верните «Null». В противном случае проверьте, равна ли переменная === 1, если это так, верните «Да, иначе, верните« Нет ».
Прямо сейчас у меня есть это:
($is_realtor ? 'Yes' : 'No') ?? 'Null'
Но похоже, что он никогда не достигнет нулевого оператора объединения. Он вернет «Нет», даже если $is_realtor
- это null
.
Есть ли лаконичный и элегантный способ их сочетать?
Действительно, значение NULL в тернарном операторе будет считаться ложным. Таким образом, вам не нужно комбинировать эти операторы. Затем есть этот «другой случай», неопределенная переменная. Даже если это не совсем то, о чем спрашивали, я чувствую себя обязанным указать, что нужно будет использовать старый добрый isset. Неопределенные переменные не будут считаться ложными. Если есть способ объединить эти два оператора, я его еще не нашел.
Вы можете составить столько условий, сколько захотите. Но чем больше вы гнездитесь, тем труднее будет читать.
$value = ($is_realtor === null ? null : ($is_realtor == 1 ? 'yes':'no') );
Результатом этой тернарной операции всегда будет только «Да» или «Нет», потому что, если
$is_realtor
равен нулю, он будет оценен как ложный, и будет применено «Нет». Если вы хотите 3 возможных результата, вам понадобится оператор if, состоящий из 3 частей. Ради будущих разработчиков не пытайтесь быть максимально умными.