У меня странная (но, надеюсь, простая мисс) проблема с троичным присваиванием в PHP. Ниже для $ category установлено пустое значение, что означает, что sizeof ($ data) оценивается как 0. Я ожидаю, что ему должна быть назначена «Test Category».
$data=array('Test Category');
$category= (sizeof($data)>0 ? trim($data[0]) : '');
Если я вместо этого сделаю следующее, я получу $ category со значением ‘Test Category’, почему тернарный оператор не работает так, как показано ниже?
if(sizeof($data)>0){
$category=trim($data[0]);
}
Как насчет проверки $data[0]
как это:
if(isset($data[0]) && !empty($data[0])){
$category=trim($data[0]);
}
Вы можете изменить это на троичное следующим образом:
$category = (isset($data[0]) && !empty($data[0])) ? $data[0] : '';
Вы не смогли написать свое троичное задание, посмотрите на скобки.
Пытаться: $category= (sizeof($data)>0) ? trim($data[0]) : '';
если ваш массив имеет пустое значение, значит, вы получите такой же результат, как этот, вот два примера для кода:
$data=array();
$category= (sizeof($data)>0 ? trim($data[0]) : 'no');
echo $category; // output is no
еще один:
$data=array('');
$category= (sizeof($data)>0 ? trim($data[0]) : 'no');
echo $category; //output is empty. it wont show the 'no'
В вашем случае проверьте, является ли тестовая категория пустым значением или пустым. Ваш код:
$data=array('Test Category');
$category= (sizeof($data)>0 ? trim($data[0]) : 'no');
echo $category; //output is Test Category