Логическое ИЛИ не будет работать в if - PullRequest
0 голосов
/ 22 марта 2011

это то, что у меня есть:

<?php if($row['id']!="9") echo "style=\"display:none\""; ?>  

достаточно просто, он должен поместить style="dsplay:none", когда 'id' - это что-то кроме 9. Это хорошо работает, но я хотел включить 'id'8, 12 и 13, а также.выглядело достаточно просто, просто добавил логическое или как это:

<?php if($row['id']!="8||9||12||13") echo "style=\"display:none\""; ?>

, но он больше не работает, поэтому он все время помещает style="dsplay:none".

Я хотел пойти другойи сделал это

<?php if($row['id']=="4||5||6||11") echo "style=\"display:none\""; ?>

, но на этот раз style="dsplay:none" так и не был помещен.
это привело меня к выводу, что должно быть что-то не так с логическим или.а что это?пожалуйста, дайте мне знать, спасибо!

Ответы [ 5 ]

3 голосов
/ 22 марта 2011

Вы хотите:

if($row['id']!= 8 && $row['id'] != 9 && $row['id'] != 12)

, потому что в настоящее время вы сравниваете значение $ row['id'] со строковым значением "8||9||12||13".

Или вы можете сделатьчто-то вроде:

if(in_array($row['id'], array(8, 9, 12)))

, чтобы сжать условие.

2 голосов
/ 22 марта 2011

Вы не можете так делать.

Либо используйте if($row['id'] == 4 || $row['id'] == 5 || ...), либо используйте in_array(): if(in_array($row['id'], array(4,5,6,11)))

1 голос
/ 22 марта 2011

Вы сравниваете числа со строками так, что это не сработает. Например. $row['id'] из 1 не равно строке "4||5||6||11".

Вы можете использовать функцию in_array, которая проверяет, существует ли значение в массиве:

if(!in_array($row['id'], array(4, 5, 6, 11)) echo ' style="display:none"';

Логические ИЛИ (||) не работают внутри строк.

1 голос
/ 22 марта 2011

Предлагаю вам написать

<?php if(in_array($row['id'], array(8, 9, 12, 13)) /* ... */; ?>
0 голосов
/ 22 марта 2011

Это не логично или строковый литерал. Но Де Морган :

if(($row['id']!="8") && $row['id']!="9" && ...
...