V PHP, ako môžem nie spustiť prichádzajúci kód (nezobrazuje sa napríklad v div), ak sú splnené tri podmienky, a na druhej strane ho vykonajte, ak a iba ak je niektorá z týchto 3 podmienok nepravdivá?
Napríklad opak toho, čo chcem urobiť, je, aby robiť spustiť kód, ak sú tieto tri podmienky skutočne splnené, urobím niečo také:
<?php
$var1 = "true";
$var2 = "true";
$var3 = "false";
?>
<?php if ( $var1 == "true" and $var2 == "true" and $var3 == "true" ) : ?>
<?php echo "All 3 are true, will execute code."; ?>
<?php else : ?>
<?php echo "Not all 3 are true, will not execute code."; ?>
<?php endif; ?>
Výsledok: Nie všetky tri sú pravdivé, takže kód nebude vykonaný.
Dúfam, že som pochopil, Vopred ďakujem.
odpovede:
1 pre odpoveď č. 1if (!($x=="x" && $y=="y" && $z=="z")){
// do if matches
}else {
//do otherwise
}
Stačí dať! znamenie ako keby (! ())
1 pre odpoveď č. 2
Môžete použiť zákony spoločnosti DeMorgan na prevrátenie pravdy vášho celku if
doložka:
if( $var1 != true or $var2 != true or $var3 != true ){
//execute code
}
Alebo to môžete urobiť pomocou !
operátor, ktorý je úplne logicky ekvivalentný:
if( !( $var1 == true and $var2 == true and $var3 == true ) ){
//execute code
}
Alebo môžete prevrátiť kontrolované hodnoty, čo je tiež logicky ekvivalentné:
if( $var1 == false or $var2 == false or $var3 == false ){
//execute code
}
Všetky tieto budú fungovať rovnakým spôsobom. Ak ich dôkladne preštudujete, môžete tiež pochopiť, PREČO všetci fungujú rovnako, čo vám pomôže navrhnúť tieto doložky v budúcnosti!
1 pre odpoveď č. 3
Najjednoduchšie by bolo použitie !
(nie) prevádzkovateľ:
<?php if (!( $var1 == "true" and $var2 == "true" and $var3 == "true" )) ?>
<?php echo "Not all 3 are true, will execute code."; ?>
<?php else : ?>
<?php echo "All 3 are true, will execute code."; ?>
<?php endif; ?>
alebo alternatívne "otvoriť" !
(nie) prevádzkovateľ:
<?php if $var1 != "true" or $var2 != "true" or $var3 != "true" ?>
<?php echo "Not all 3 are true, will execute code."; ?>
<?php else : ?>
<?php echo "All 3 are true, will execute code."; ?>
<?php endif; ?>
0 pre odpoveď č. 4
Je tu a !=
prevádzkovateľ, ktorý je opakom ==
operátor vráti nepravdivé, ak tieto dve veci nie sú rovnaké. K dispozícii je tiež !
operátor, ktorý vracia opačnú booleovskú hodnotu veci, ktorú upravuje, napr
!($var1 == "true" or $var2 == "true")
vráti nepravdivé, ak obidve $var1
a $var2
sú "true"
.
Navyše nemusíte otvárať a zatvárať svoje <?php ?>
značka pre každý jednotlivý riadok php. V skutočnosti nerobte to preto, že by čítanie kódu bolo veľmi nepríjemné <?php
kde začínate php a ?>
kde skončíš.
0 pre odpoveď č. 5
<?php
$var1 = true; // IF these are really BOOLEAN values
$var2 = true;
$var3 = false;
?>
<?php if ( $var1 && $var2 && $var3 ) : ?>
<?php echo "All 3 are true, will execute code."; ?>
<?php else : ?>
<?php echo "Not all 3 are true, will not execute code."; ?>
<?php endif; ?>
0 pre odpoveď č. 6
Skúste to:
<?php if($var1 == "true" and $var2 == "true" and $var3 == "true"): ?>
<?php echo "All 3 are true, will execute code."; ?>
<?php elseif($var1 != "true" and $var2 != "true" and $var3 != "true"): ?>
<?php echo "Not all 3 are true, will not execute code."; ?>
<?php endif; ?>