Codes actuels:
<?php
// See the AND operator; How do I simplify/shorten this line?
if( $some_variable !== 'uk' && $some_variable !== 'in' ) {
// Do something
}
?>
Et:
<?php
// See the OR operator; How do I simplify/shorten this line?
if( $some_variable !== 'uk' || $some_variable !== 'in' ) {
// Do something else
}
?>
Existe-t-il un moyen plus simple (c’est-à-dire plus court) d’écrire les deux conditions?
NOTE: Oui, ils sont différents, et je m'attends à différentes manières de raccourcir les codes.
Pour votre premier code, vous pouvez utiliser une brève modification de la réponse donnée par @ShankarDamodaran using in_array()
:
if ( !in_array($some_variable, array('uk','in'), true ) ) {
est le même que:
if ( $some_variable !== 'uk' && $some_variable !== 'in' ) {
... mais plus courte. Surtout si vous comparez plus que juste «uk» et «in». Je n’utilise pas de variable supplémentaire (Shankar a utilisé $ os) mais je définis le tableau dans l’instruction if. Certains pourraient trouver cela sale, je le trouve rapide et soigné: D
Le problème avec votre deuxième code est qu’il peut être facilement échangé avec juste TRUE puisque:
if (true) {
équivaut à
if ( $some_variable !== 'uk' || $some_variable !== 'in' ) {
Vous demandez si la valeur d'une chaîne n'est pas A ou Non B. Si c'est A, ce n'est certainement pas aussi B et si c'est B, c'est certainement pas A. Et si c'est C ou littéralement autre chose, c'est aussi pas A et pas B. Donc cette déclaration toujours (ne tenant pas compte de la loi de schrödingers ici) retourne vrai.
Vous pouvez utiliser in_array()
en PHP.
$os = array("uk", "us"); // You can set multiple check conditions here
if (in_array("uk", $os)) //Founds a match !
{
echo "Got you";
}
Vous devez vérifier plusieurs valeurs. Essayez d'utiliser le code suivant:
<?php
$illstack=array(...............);
$val=array('uk','bn','in');
if(count(array_intersect($illstack,$val))===count($val)){ // all of $val is in $illstack}
?>
Si vous envisagez de créer une fonction dans l'instruction if, je conseillerais également l'utilisation de in_array. C'est beaucoup plus propre.
Si vous essayez d'affecter des valeurs à des variables, vous pouvez utiliser le raccourci if/else:
$variable_to_fill = $some_variable !== 'uk' ? false : true;
Certaines expressions rationnelles de base feraient bien l'affaire pour $some_variable !== 'uk' && $some_variable !== 'in':
if(!preg_match('/^uk|in$/', $some_variable)) {
// Do something
}