php ternary if / else с sizeof всегда false?

У меня странная (но, надеюсь, простая мисс) проблема с троичным присваиванием в 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]);
}

0

Решение

Как насчет проверки $data[0] как это:

if(isset($data[0]) && !empty($data[0])){
$category=trim($data[0]);
}

Вы можете изменить это на троичное следующим образом:

$category = (isset($data[0]) && !empty($data[0])) ? $data[0] : '';
2

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

Вы не смогли написать свое троичное задание, посмотрите на скобки.

Пытаться: $category= (sizeof($data)>0) ? trim($data[0]) : '';

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
0
По вопросам рекламы [email protected]