ホームページ >バックエンド開発 >PHPの問題 >=== が == より速いのはなぜですか?

=== が == より速いのはなぜですか?

Guanhui
Guanhui転載
2020-06-18 18:01:322928ブラウズ

=== が == より速いのはなぜですか?

比較演算子 == (等価演算子) および === (恒等演算子) は、2 つの値を比較するために使用されます。これらは、緩い等号 (==) 演算子および 厳密な等号 (===) 演算子としても知られています。

#シンボル名前例出力結果==Equals$a == $b型を無視します。$a が $b と等しい場合は TRUE ===常に等しい$a === $b$aが$bに等しく、型が同じ

PHP 演算子 PHP には多くの演算子がありますが、== 演算子と === 演算子は同様のタスクを厳密または任意に実行します。

    2 つの値の型が異なる場合、== と === は
  • 異なる結果を取得します。 == は最初に型変換を実行してから比較を実行するため、操作の速度も異なります。
  • 2 つの値の型が同じ場合、== と === は
  • 同じ結果を取得します。動作速度もほぼ同じで、どちらのオペレータも型変換を行いません。
等価演算 == は 2 つの値を比較するときに一時的にデータ型を変換しますが、 === (同一演算子) は型変換を行う必要がないため、計算量が削減され高速化されます。より速いです。

ケース 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; 
} 
?>

出力:

bool(true)

bool(true)
bool(true)
bool(true)
bool(false)
bool(false)
bool(false)
bool(false)
最初のケース

ケース 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); 
?>

出力:

bool(true)

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

注: === 演算子「型比較は比較的安全」は、2 つの値の型と値が同じである場合にのみ TRUE を返します。= を使用してください。 = 値が等しい場合は TRUE を返します。

推奨チュートリアル: 「

PHP チュートリアル

以上が=== が == より速いのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はlearnku.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。