2015-08-09 3 views
0

Здравствуйте, я использую тернарный оператор для отображения ссылок в случае, если они существуют, в случае, если поле базы данных NULL, я не хочу ничего показывать. Сейчас он показывает 1. как я могу избежать этого?Ternary Operator показывает 1 вместо этого по нуле

echo "".(($row['photo_01']=='')? :'<li><img src="uploads/'.$row['photo_01'].'"></li>')." 

ответ

3

Если оставить второй часть троичного оператора пустой, это эквивалентно следующему:

echo "".(($row['photo_01']=='') 
    ? ($row['photo_01']=='') // this is duplicated 
    :'<li><img src="uploads/'.$row['photo_01'].'"></li>')." 

Более обобщенно:

($x ? $x : $y) === ($x ?: $y) 

($row['photo_01']=='') оценивается как true, который вторит, как 1, так что вам нужно обновить свой код, чтобы быть похожим на это:

echo "".(($row['photo_01']=='')? '' :'<li><img src="uploads/'.$row['photo_01'].'"></li>')." 

Конечно, вы всегда можете очистить его так:

echo "".($row['photo_01'] ? '<li><img src="uploads/'.$row['photo_01'].'"></li>' : '')." 
1

Используйте пустые кавычки для представления нулевой «», а также поместить результат троичного в переменной затем использовать его в эхо, чтобы предотвратить cofusion:

$result = ($row['photo_01']=='') ? '' :'<li><img src="uploads/'.$row['photo_01'].'"></li>'; 

echo $result; 
Смежные вопросы