PHP Véritable valeur et vérité opérateur identique


Exemple

En PHP, les valeurs de variables ont une "vérité" associée, donc même les valeurs non-booléennes sont true ou false . Cela permet d'utiliser n'importe quelle variable dans un bloc conditionnel, par exemple

if ($var == true) { /* explicit version */ }
if ($var) { /* $var == true is implicit */ }

Voici quelques règles fondamentales pour différents types de valeurs de variables:

  • Les chaînes dont la longueur est différente de zéro correspondent à true y compris les chaînes contenant uniquement des espaces tels que ' ' .
  • Les chaînes vides '' assimilent à false .
$var = '';
$var_is_true = ($var == true); // false
$var_is_false = ($var == false); // true

$var = '   ';
$var_is_true = ($var == true); // true
$var_is_false = ($var == false); // false
  • Les entiers équivalent à true s'ils ne sont pas nuls, tandis que zéro équivaut à false .
$var = -1;
$var_is_true = ($var == true); // true
$var = 99;
$var_is_true = ($var == true); // true
$var = 0;
$var_is_true = ($var == true); // false
  • null équivaut à false
$var = null;
$var_is_true = ($var == true); // false
$var_is_false = ($var == false); // true
  • Les chaînes vides '' et la chaîne zéro '0' équivalent à false .
$var = '';
$var_is_true = ($var == true); // false
$var_is_false = ($var == false); // true

$var = '0';
$var_is_true = ($var == true); // false
$var_is_false = ($var == false); // true
  • Les valeurs à virgule flottante équivalent à true si elles ne sont pas nulles, tandis que les valeurs nulles correspondent à false .
    • NAN (Not-a-Number de PHP) équivaut à true , c'est-à-dire que NAN == true est true . Cela est dû au fait que NAN est une valeur à virgule flottante non nulle .
    • Les valeurs nulles incluent à la fois +0 et -0 telles que définies par IEEE 754. PHP ne fait pas la distinction entre +0 et -0 dans son virgule flottante double précision, c.-à-d. floatval('0') == floatval('-0') est true .
      • En fait, floatval('0') === floatval('-0') .
      • De plus, floatval('0') == false et floatval('-0') == false .
$var = NAN;
$var_is_true = ($var == true); // true
$var_is_false = ($var == false); // false

$var = floatval('-0');
$var_is_true = ($var == true); // false
$var_is_false = ($var == false); // true

$var = floatval('0') == floatval('-0');
$var_is_true = ($var == true); // false
$var_is_false = ($var == false); // true

OPÉRATEUR IDENTIQUE

Dans la documentation PHP pour les opérateurs de comparaison , il existe un opérateur identique === . Cet opérateur peut être utilisé pour vérifier si une variable est identique à une valeur de référence:

$var = null;
$var_is_null = $var === null; // true
$var_is_true = $var === true; // false
$var_is_false = $var === false; // false

Il a un opérateur correspondant non identique !== :

$var = null;
$var_is_null = $var !== null; // false
$var_is_true = $var !== true; // true
$var_is_false = $var !== false; // true

L'opérateur identique peut être utilisé comme alternative aux fonctions de langage comme is_null() .

CAS D'UTILISATION AVEC strpos()

La fonction de strpos($haystack, $needle) est utilisée pour localiser l'index auquel $needle apparaît dans $haystack , ou si elle se produit du tout. La fonction strpos() est sensible à la casse; si la recherche insensible à la casse est ce dont vous avez besoin, vous pouvez aller avec des stripos($haystack, $needle)

La fonction strpos & stripos contient également le troisième paramètre offset (int) qui, si spécifié, lance ce nombre de caractères depuis le début de la chaîne. Contrairement aux strrpos et strripos, le décalage ne peut pas être négatif

La fonction peut retourner:

  • 0 si $needle est trouvé au début de $haystack ;
  • un entier non nul spécifiant l'index si $needle est trouvé quelque part autre que le début dans $haystack ;
  • et la valeur false si l' $needle ne trouve nulle part dans $haystack .

Comme 0 et false ont tous deux une vérité false en PHP mais représentent des situations distinctes pour strpos() , il est important de les distinguer et d'utiliser l'opérateur identique === pour rechercher exactement les false et pas seulement les valeurs false .

$idx = substr($haystack, $needle);
if ($idx === false) 
{
    // logic for when $needle not found in $haystack
} 
else
{
    // logic for when $needle found in $haystack
}

Alternativement, en utilisant l'opérateur non identique :

$idx = substr($haystack, $needle);
if ($idx !== false) 
{
    // logic for when $needle found in $haystack
} 
else
{
    // logic for when $needle not found in $haystack
}