Heim > Artikel > Backend-Entwicklung > Zusammenstellung von PHP-Operator-Wissenspunkten
1. Arithmetische Operatoren
1. Übersicht
2 🎜>Der Divisionsoperator gibt immer eine Gleitkommazahl zurück. Die einzige Ausnahme besteht darin, dass beide Operanden Ganzzahlen (oder aus Zeichenfolgen umgewandelte Ganzzahlen) sind und exakt teilbar sind. In diesem Fall wird eine Ganzzahl zurückgegeben.
Die Operanden des Modulo-Operators werden vor der Operation in Ganzzahlen umgewandelt (mit Ausnahme des Dezimalteils).
Das Ergebnis des Modulo-Operators % ist dasselbe wie das Vorzeichen (Vorzeichen) der Dividende. Das heißt, das Ergebnis von $a % $b hat das gleiche Vorzeichen wie $a. Zum Beispiel:
echo (5 % 3)."\n"; // prints 2 echo (5 % -3)."\n"; // prints 2 echo (-5 % 3)."\n"; // prints -2 echo (-5 % -3)."\n"; // prints -22. Bitweise Operatoren
1. Übersicht
2. TIPPS
Verschiebung ist eine mathematische Operation in PHP.
In eine beliebige Richtung herausbewegte Bits werden verworfen.
Beim Verschieben nach links wird die rechte Seite mit Nullen aufgefüllt und das Vorzeichenbit entfernt, d.h. das Vorzeichen bleibt nicht erhalten.
Beim Verschieben nach rechts wird die linke Seite mit Vorzeichenbits gefüllt, das heißt, die positiven und negativen Vorzeichen bleiben erhalten.
Achten Sie besonders auf die Priorität, wenn Sie bitweise Operatoren verwenden. Zum Beispiel:
$a & $b == true, zuerst vergleichen und dann bitweise AND ausführen;
($a & $b) == true, zuerst bitweise AND ausführen und dann vergleichen . .
3. VergleichsoperatorenÜbersicht
2 . TIPPS
Wenn Sie eine Zahl und eine Zeichenfolge vergleichen oder eine Zeichenfolge mit numerischem Inhalt vergleichen, wird die Zeichenfolge in einen numerischen Wert umgewandelt und der Vergleich wird entsprechend dem numerischen Wert durchgeführt. Diese Regel gilt auch für switch-Anweisungen. Beim Vergleich mit === oder !== wird keine Typkonvertierung durchgeführt, da sowohl Typen als auch Werte verglichen werden.
<?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. Für mehrere Typen vergleichen Vergleichsoperatoren (in der Reihenfolge) gemäß der folgenden Tabelle
4 . Lose Vergleichstabelle
4. Inkrementierungs-/Dekrementierungsoperatoren
1. Übersicht
🎜>
2. TIPPS
Die Inkrementierungs-/Dekrementierungsoperatoren haben keinen Einfluss auf boolesche Werte. Das Verringern eines NULL-Werts hat keine Auswirkung, aber das Erhöhen von NULL führt zu 1.
Beim Umgang mit arithmetischen Operationen an Zeichenvariablen folgt PHP eher den Gewohnheiten von Perl als denen von C.
Zum Beispiel wird in Perl $a = 'Z'; $a++; in 'AA' umgewandelt, während in C a = 'a++; der ASCII-Wert von „Z“ ist 90 und der ASCII-Wert von „[“ ist 91).
Beachten Sie, dass Zeichenvariablen nur inkrementiert, nicht dekrementiert werden können und nur reine Buchstaben (a-z und A-Z) unterstützen.
Das Erhöhen/Verringern anderer Zeichenvariablen ist ungültig und die ursprüngliche Zeichenfolge ändert sich nicht.
5. Logische OperatorenÜbersicht
2 . TIPPS
Der Grund, warum „AND“ und „OR“ zwei unterschiedliche Formen von Operatoren haben, liegt darin, dass ihre Operationsprioritäten unterschiedlich sind. // "&&" 比 "and" 的优先级高
// 表达式 (true && false) 的结果被赋给 $g
// 等同于:($g = (true && false))
$g = true && false;
// 常量 true 被赋给 $h,false 被忽略
// 等同于:(($h = true) and false)
$h = true and false;
1. Übersicht
2. TIPPSWenn die Zellen im Array denselben Schlüsselnamen und Wert haben, sind sie beim Vergleich gleich
$a = array("apple", "banana"); $b = array(1 => "banana", "0" => "apple"); var_dump($a == $b); // bool(true) var_dump($a === $b); // bool(false)+ Der Unterschied zwischen Operator und array_merge() Wenn der Array-Index ein Zeichen ist und auf denselben Schlüsselnamen trifft, verwirft der +-Operator den nachfolgenden Wert; array_merge() überschreibt den vorherigen Wert mit dem nachfolgenden Wert. Wenn der Array-Index ein numerischer Wert ist, behält array_merge() alle Werte bei und indiziert das Array neu. Der +-Operator verwirft auch nachfolgende Werte mit demselben Index.
$arr1 = ['color' => 'red', 10, 20]; $arr2 = [0, 1, 'color' => 'green']; print_r($arr1 + $arr2); print_r(array_merge($arr1, $arr2));Ausgabe:
Array ( [color] => red [0] => 10 [1] => 20 ) Array ( [color] => green [0] => 10 [1] => 20 [2] => 0 [3] => 1 )
7. Operatorpriorität
1. Übersicht
2. TIPPSWenn die Operatoren die gleiche Priorität haben, bestimmt die Kombinationsrichtung der Operatoren die Vorgehensweise. Beispielsweise ist „-“ ein Linksgelenk, dann ist 1 – 2 – 3 äquivalent zu (1 – 2) – 3 und das Ergebnis ist –4. Andererseits ist „=“ ein Rechtsgelenk $a = $b = $c ist äquivalent zu $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
Das obige ist der detaillierte Inhalt vonZusammenstellung von PHP-Operator-Wissenspunkten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!