цикл while — PHP и / или показывает противоположное тому, что должно быть

Я показываю результаты базы данных, и я хотел бы скрыть пустые строки. Я проверяю, чтобы убедиться, что оба столбца не равны 0 перед отображением. Я думал, что понадобится && оператор, но это не отображает строку, если только один столбец имеет 0. Если я изменить его на ||, данные отображаются правильно. Есть ли причина, почему это работает противоположным образом, как и ожидалось?

Вот цикл php, который в настоящее время работает правильно (но не так, как ожидалось):

while($placement = mysqli_fetch_assoc($placeQuery)){
echo '<tr>';
if(($totals[$placeID][$totaldate]['impr'] != 0) || ($totals[$placeID][$totaldate]['amt'] != 0)){
echo '<td>'.$placement['type_name'].'</td>';
}
}

0

Решение

Чтобы ответить на вопрос «не работает, как ожидалось», это может помочь в чтении логических функций. Изучите таблицы правды, и подобные вещи станут намного понятнее.
http://en.wikipedia.org/wiki/Truth_table

И будет ложным для:
0,0
1,0
0,1
и даст true для 1,1, поэтому использование AND означает, что вы будете отображаться, только если оба столбца не равны нулю.

ИЛИ будет ложным только для:
0,0
и true для других комбинаций, поэтому использование OR покажет UNLESS, если оба равны 0.

1

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

Других решений пока нет …

По вопросам рекламы [email protected]