Можете ли вы использовать тернарный оператор в PHP без закрывающего оператора else? Я пробовал, и он возвращает ошибки. Поиск в Google ничего не дает, поэтому я думаю, что ответ, вероятно, отрицательный. Я просто хотел дважды проверить здесь. Например:
if ( isset($testing) {
$new_variable = $testing;
}
Устанавливает только $ new_variable, если существует $ testing. Теперь я могу сделать
$new_variable = (isset($testing) ? $testing : "");
но это возвращает пустую переменную для $ new_variable, если $ testing не установлено. Мне не нужна пустая переменная, если она не установлена, я хочу, чтобы $ new_variable не создавалась.
Я пытался
$new_variable = (isset($testing) ? $testing);
и он вернул ошибки. Я тоже пробовал
$new_variable = (isset($testing) ? $testing : );
и он также вернул ошибки. Есть ли способ использовать тернарный оператор без прикрепленного оператора else, или я застрял в написании его от руки?
РЕДАКТИРОВАТЬ: Следуя совету Rizier123, я попытался установить для части «else» уравнения значение NULL, но в итоге все равно добавляется ключ к массиву. Ценности нет, но есть ключ, который разрушает мои планы. Пожалуйста, позвольте мне объяснить подробнее.
Код будет брать кучу переменных $ _POST из формы и использовать их для параметров в stdClass, который затем используется для вызовов методов API. Некоторые переменные формы не будут существовать, поскольку все они применяются к одной и той же переменной для вызова API, но пользователь может выбрать только одну. В качестве примера, возможно, вы можете выбрать 3 элемента, какой бы элемент вы ни выбрали, передается в stdClass, а два других не существуют.
Я пробовал это:
$yes_this_test = "IDK";
$setforsure = "for sure";
$list = new stdClass;
$list->DefinitelySet = $setforsure;
$list->MaybeSet = (isset($yes_this_test) ? $yes_this_test : NULL);
$list->MaybeSet = (isset($testing) ? $testing : NULL);
print_r($list);
Но очевидно, что MaybeSet получает значение NULL, потому что (isset ($ testing) идет после (isset ($ yes_this_test) и возвращает
stdClass Object ( [DefinitelySet] => for sure [MaybeSet] => )
Я не буду знать, в каком порядке идут переменные $ _POST, поэтому я не могу структурировать его таким образом, чтобы гарантировать, что список обрабатывается в правильном порядке.
Теперь я знаю, что могу сделать что-то вроде
if ( isset($yes_this_test ) {
$list->MaybeSet = $yes_this_test;
}
elseif ( isset($testing) ) {
$list->MaybeSet = $testing;
}
Но я надеялся, что у этого типа логики есть сокращение, так как мне пришлось написать десятки таких логик. Есть ли оператор, похожий на тернарный оператор, используемый для операторов if / elseif?
if(isset($testing)) $new_variable = $testing;
. IMO Мне не нравится, если без фигурных скобок, но просто говорю, что это возможно. ИМО, было бы лучше просто установить его в NULL, как предлагает Ризье, потому что isset вернет false, если значение равно NULL.isset($nullVar)
вернет false. - person Jonathan Kuhn   schedule 31.03.2015