Как на php записать тернарную операцию с проверкой двух условий?
Есть пример как на JS пишется, как примерно также записать на PHP ?
// PHP
$output = '';
if ($value['status'] === 'ok') $output = 'step_1';
else if ($value['status'] === 'error') $output = 'step_2';
// JS
let output = (value.status === 'ok') ? 'step_1' : ((value.status === 'error') ? 'step_2' : '');
Ответы (1 шт):
Автор решения: Егор Банин
→ Ссылка
В php, если получать значение по несуществующему ключу массива, получим ошибку. Поэтому сперва:
$status = $value['status'] ?? 'undefined';
Далее, вам надо для разных статусов разные значения $output. Мне кажется, что нагляднее всего это сделать через match, switch или через ассоциативный массив:
$output = match($status) {
'ok' => 'step_1',
'error' => 'step_2',
default => '',
};
или до php8:
$output = [
'ok' => 'step_1',
'error' => 'step_2',
][$status] ?? '';
Несколько тернарных операторов в одну строку — дурной тон. Это сложно читать и надо сидеть расплетать скобочки. Но в качестве упражнения можете написать:
$output = ($value['status'] ?? 'undefined') === 'ok' ? 'step_1' : (($value['status'] ?? 'undefined') === 'error' ? 'step_2' : '');