Heim >Backend-Entwicklung >PHP-Problem >Warum ist === schneller als ==?

Warum ist === schneller als ==?

Guanhui
Guanhuinach vorne
2020-06-18 18:01:322928Durchsuche

Warum ist === schneller als ==?

Vergleichsoperatoren == (Gleichheitsoperator) und === (Identitätsoperator) werden zum Vergleich zweier Werte verwendet. Sie werden auch als lose Gleichheitsoperatoren (==) und strikte Gleichheitsoperatoren (===) bezeichnet.

符号 名称 例子 输出结果
== 等于 $a == $b 忽略类型,如果 $a 等于 $b 则为 TRUE
=== 恒等于 $a === $b 如果 $a 等于 $b,并且类型相同则为 TRUE

PHP-Operatoren Es gibt viele Operatoren in PHP, aber die Operatoren == und === führen ähnliche Aufgaben streng oder willkürlich aus.

  • Wenn die beiden Werte unterschiedlichen Typs sind, liefern == und === unterschiedliche Ergebnisse. Die Geschwindigkeit des Vorgangs variiert ebenfalls, da == zuerst eine Typkonvertierung durchführt und dann den Vergleich durchführt.
  • Wenn zwei Werte vom gleichen Typ sind, dann liefern == und === dasselbe Ergebnis. Auch die Betriebsgeschwindigkeit ist nahezu gleich und keiner der Operatoren führt eine Typkonvertierung durch.

Gleichheitsoperation == konvertiert vorübergehend den Datentyp beim Vergleich zweier Werte, während === (identischer Operator) keine Typkonvertierung durchführen muss, sodass der Berechnungsaufwand und die Geschwindigkeit reduziert werden ist schneller.

Fall 1:

<?php 

// 0 == 0 ->  类型相同返回 true
// 转换完成,然后
// 检查是否相等
var_dump(0 == "a"); 

// 1 == 1 -> true 
var_dump("1" == "01"); 

// 10 == 10 -> true 
var_dump("10" == "1e1"); 

// 100 == 100 -> true 
var_dump(100 == "1e2"); 

// 0 === "a" -> 这种情况为 false
// 转换不仅完成
// 还检查是否存在
// 是否相等
var_dump(0 === "a"); 

// "1" === "01" -> false 
var_dump("1" === "01"); 

// "10" === "1e1" -> false 
var_dump("10" === "1e1"); 

// 100 == "1e2" -> false 
var_dump(100 === "1e2"); 

switch ("a") { 
case 0: 
    echo "In first case"; 
    break; 

// 永远不会匹配 "a" 选项
// 因为 switch 使用的是 == 
case "a": 
    echo "In sceond case"; 
    break; 
} 
?>

Ausgabe:

bool(true)
bool(true)
bool(true)
bool(true)
bool(false)
bool(false)
bool(false)
bool(false)
Im ersten Fall

Fall 2:

<?php 

// TRUE - 以下表达式等同于 (bool)1 == TRUE 
var_dump(1 == TRUE); 

// TRUE - 以下表达式等同于 (bool)0 == FALSE 
var_dump(0 == FALSE); 

// FALSE - 1 不全等于 TRUE
// 1 是整形, TRUE 是布尔型 
var_dump(1 === TRUE); 

// FALSE - 0 不全等于 FALSE
// 0 是整形, FALSE 是布尔型
var_dump(0 === FALSE); 
?>

Ausgabe:

bool(true)
bool(true)
bool(false)
bool(false)

Hinweis: === Der Operator „Typvergleich ist relativ sicher“ gibt nur TRUE zurück, wenn zwei Werte denselben Typ und Wert haben. Verwenden Sie = = gibt TRUE zurück, wenn die Werte gleich sind.

Empfohlenes Tutorial: „PHP-Tutorial

Das obige ist der detaillierte Inhalt vonWarum ist === schneller als ==?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen