Maison >développement back-end >tutoriel php >Compilation des points de connaissance des opérateurs PHP

Compilation des points de connaissance des opérateurs PHP

藏色散人
藏色散人avant
2019-09-27 09:17:212472parcourir

1. Opérateurs arithmétiques

1. Aperçu

Compilation des points de connaissance des opérateurs PHP

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

Compilation des points de connaissance des opérateurs PHP

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

Compilation des points de connaissance des opérateurs PHP

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

Compilation des points de connaissance des opérateurs PHP

4. Tableau de comparaison lâche

Compilation des points de connaissance des opérateurs PHP

4. Opérateurs d'incrémentation/décrémentation

1.

Compilation des points de connaissance des opérateurs PHP

2. CONSEILS

Les 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 logiques

1. Présentation

Compilation des points de connaissance des opérateurs PHP

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;

6. Opérateurs de tableau

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()Compilation des points de connaissance des opérateurs PHP

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 = [&#39;color&#39; => &#39;red&#39;, 10, 20];
$arr2 = [0, 1, &#39;color&#39; => &#39;green&#39;];
print_r($arr1 + $arr2);
print_r(array_merge($arr1, $arr2));

Sortie :

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. CONSEILS

Si 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 1 在PHP是不合法的。但另外一方面表达式 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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer