Я пытаюсь получить «ОК», если мое условие False, я хочу сохранить то же самое, если иначе заказать в качестве примера, не советуйте перемещать контент «else» в «if» и «if» content в «else»,
<?php //Case 1 Both False //$point = 1001; //more than 100 //$flag = 1; //flag is = 0 //Case 2 First False Second True //$point = 1000; //less than 1000 //$flag = 0; //flag is = 0 //Case 3 First TRUE Second FALSE //$point = 100; //less than 100 //$flag = 1; //flag is = 1 $point = 1001; $flag = 1; ?> <div class="box border"> <div class="box-title"> <?php if($flag == 0 || $point < 1000) { ?> <h4>Not OK</h4> <?php } else { ?> <h4>OK</h4> <?php }?> </div>
в сценарии выше // Дело 1 работает, но Case 2 и Case 3 оба не работают с оператором OR
Я хочу, чтобы все 3 случая работали одинаково
После прочтения ваших комментариев:
Кажется, вы хотите показать некоторый балл (в else-ветке if-then-else), если пользователь имеет равные / более 1000 пунктов или вы переключаете флаг (что в основном означает «всегда показывать точки»).
Обычно вы делаете это в if-ветке:
if ($flag || $point >= 1000) { echo "OK"; } else { echo "Not OK"; }
Так как вы хотите, чтобы Not OK
было в If-Branch, вам нужно инвертировать условие, так как это означает инвертирование каждой части условия и операторов :
$flag
становится !$flag
$point >= 1000
становится $point < 1000
||
становится &&
Результат:
if (!$flag && $point < 1000) { echo "Not OK"; } else { echo "OK"; }
Записывая это в таблицу истинности:
flag point result 0 < 1000 Not OK 1 < 1000 OK 0 >=1000 OK 1 >=1000 OK
Я тестировал этот код, и он работает.
if(!($flag != 0 || $point >= 1000)){ echo "Not OK"; }else{ echo "OK"; }