1. Opérateurs arithmétiques
1. Aperçu
2. 🎜>
L'opérateur de division renvoie toujours un nombre à virgule flottante. La seule exception est si les deux opérandes sont des entiers (ou des entiers convertis à partir de chaînes) et sont exactement divisibles, auquel cas il renvoie un entier. Les opérandes de l'opérateur modulo seront convertis en entiers (sauf la partie décimale) avant opération. Le résultat de l'opérateur modulo % est le même que le signe (signe) du dividende. Autrement dit, le résultat de $a % $b a le même signe que $a. Par exemple :echo (5 % 3)."\n"; // prints 2 echo (5 % -3)."\n"; // prints 2 echo (-5 % 3)."\n"; // prints -2 echo (-5 % -3)."\n"; // prints -2
2. Opérateurs au niveau du bit
1. Présentation
2. CONSEILS
Le déplacement est une opération mathématique en PHP. Les bits déplacés dans n'importe quelle direction sont supprimés. Lors du déplacement vers la gauche, le côté droit est complété par des zéros et le bit de signe est supprimé, ce qui signifie que le signe n'est pas conservé. Lors du déplacement vers la droite, le côté gauche est rempli de bits de signe, ce qui signifie que les signes positifs et négatifs sont conservés. Portez une attention particulière à la priorité lorsque vous utilisez des opérateurs au niveau du bit. Par exemple : $a & $b == true, comparez d'abord, puis effectuez AND au niveau du bit ; ($a & $b) == true, effectuez d'abord AND au niveau du bit, puis comparez .3. Opérateurs de comparaison
1. Présentation
2. . CONSEILS
Si vous comparez un nombre et une chaîne ou comparez une chaîne impliquant un contenu numérique, la chaîne sera convertie en une valeur numérique et la comparaison sera effectuée en fonction de la valeur numérique. Cette règle s'applique également aux instructions switch. Lors de la comparaison avec === ou !==, aucune conversion de type n'est effectuée car les types et les valeurs sont comparés.<?php var_dump(0 == "a"); // 0 == 0 -> true var_dump("1" == "01"); // 1 == 1 -> true var_dump("10" == "1e1"); // 10 == 10 -> true var_dump(100 == "1e2"); // 100 == 100 -> true switch ("a") { case 0: echo "0"; break; case "a": // 永远不会到达a,因为 "a" 已经与 0 匹配 echo "a"; break; } ?>
3. Pour plusieurs types, les opérateurs de comparaison comparent (dans l'ordre) selon le tableau suivant
4. Tableau de comparaison lâche
4. Opérateurs d'incrémentation/décrémentation
1.
2. CONSEILSLes opérateurs d'incrémentation/décrémentation n'affectent pas les valeurs booléennes.
Diminuer une valeur NULL n'a aucun effet, mais augmenter NULL donne 1.
Lorsqu'il s'agit d'opérations arithmétiques sur des variables de caractères, PHP suit les habitudes de Perl au lieu de celles du C.
Par exemple, en Perl $a = 'Z'; $a++; transformera $a en 'AA', tandis qu'en C, a = 'Z'; la valeur ASCII de « Z » est 90 et la valeur ASCII de « [ » est 91).
Notez que les variables de caractères ne peuvent être qu'incrémentées, pas décrémentées, et ne prennent en charge que les lettres pures (a-z et A-Z).
L'incrémentation/décrémentation d'autres variables de caractères n'est pas valide et la chaîne d'origine ne changera pas.
5. Opérateurs logiques1. Présentation
2. . CONSEILS
La raison pour laquelle "ET" et "OU" ont deux formes d'opérateurs différentes est que leurs priorités de fonctionnement sont différentes.
// "&&" 比 "and" 的优先级高 // 表达式 (true && false) 的结果被赋给 $g // 等同于:($g = (true && false)) $g = true && false; // 常量 true 被赋给 $h,false 被忽略 // 等同于:(($h = true) and false) $h = true and false;
1. 2. CONSEILS
Si les cellules du tableau ont le même nom de clé et la même valeur, elles seront égales une fois comparées
$a = array("apple", "banana"); $b = array(1 => "banana", "0" => "apple"); var_dump($a == $b); // bool(true) var_dump($a === $b); // bool(false)
+ La différence entre l'opérateur et array_merge()
Lorsque l'indice du tableau est un caractère et rencontre le même nom de clé, l'opérateur + supprimera la valeur suivante ; array_merge() écrasera la valeur précédente par la valeur suivante.Lorsque l'index du tableau est une valeur numérique, array_merge() conservera toutes les valeurs et réindexera le tableau. L'opérateur + supprime également les valeurs suivantes avec le même indice.
$arr1 = ['color' => 'red', 10, 20]; $arr2 = [0, 1, 'color' => 'green']; print_r($arr1 + $arr2); print_r(array_merge($arr1, $arr2));
Array ( [color] => red [0] => 10 [1] => 20 ) Array ( [color] => green [0] => 10 [1] => 20 [2] => 0 [3] => 1 )
7. Priorité de l'opérateur
1.
2. CONSEILSSi les opérateurs ont la même priorité, la direction combinée des opérateurs détermine comment opérer. Par exemple, "-" est une articulation gauche, alors 1 - 2 - 3 est équivalent à (1 - 2) - 3 et le résultat est -4. D'un autre côté, "=" est une articulation droite, donc. $a = $b = $c équivaut à $a = ($b = $c).
没有结合的相同优先级的运算符不能连在一起使用,例如 1 < 2 > 1 在PHP是不合法的。但另外一方面表达式 1 <= 1 == 1 是合法的, 因为 == 的优先级低于 <=。
括号的使用,哪怕在不是必要的场合下,通过括号的配对来明确标明运算顺序,而非靠运算符优先级和结合性来决定,通常能够增加代码的可读性。
着重记忆:
递增/递减 > ! > 算术运算符 > 大小比较 > (不)相等比较 > 引用 > 位运算符(^) > 位运算符(|) > 逻辑与 > 逻辑或 > 三目 > 赋值 > and > xor > or
3. 实战例题
请写出下列程序输出的结果
$a = 0; $b = 0; if ($a = 3 > 0 || $b = 3 > 0) { $a++; $b++; echo $a. "\n"; echo $b. "\n"; }
例题分析
1.题目中包含 = > || 三种运算符,优先级顺序为 > > || > =
2.$a = 3 > 0 || $b = 3 > 0 等价于 $a = ( ( 3 > 0 ) || $b = ( 3 > 0 ) )
3.( 3 > 0 ) 为 true,因此不会再运算 || 后面的式子
4.$a = true,所以程序可以改写为
$a = 0; $b = 0; if ($a = true) { $a++; $b++; echo $a. "\n"; echo $b. "\n"; }
5.因为 “递增/递减运算符不影响布尔值”,所以 $a++ 后,$a 的值依然是 true,echo true,会输出 1
6.因为 $b = 0 ,所以 $b++ 后,$b 的值为 1
7.输出结果为
1 1
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!