PHP 中的松散和严格相等检查

Habdul Hazeez 2023年1月30日
  1. PHP 中的松散相等检查
  2. PHP 中的松散不等于检查
  3. PHP 中严格的相等检查
  4. PHP 中的严格不等于检查
PHP 中的松散和严格相等检查

本文将解释如何在 PHP 中执行松散和严格的相等检查。

对于松散的相等检查,你将使用一些内置的检查运算符,例如相等运算符 == 和不相等运算符!=

此外,对于严格的相等检查,你将使用这些运算符的严格版本。

PHP 中的松散相等检查

PHP 中的松散相等检查使用双重等号 ==,而不是等号!=。两个运算符都被认为是松散的。

那是因为他们没有考虑比较变量的数据类型。因此,整数形式的一个将等于字符串格式的一个。

我们有三个检查都将返回 true。第一个检查比较字符串格式的零和一个数字。使用相等运算符,PHP 将返回 true。

equality 运算符考虑值而不是数据类型。False 和零将在第二次相等检查中返回 true,因为 false 在计算方面意味着零。

但是在这里,如果需要考虑 false 和 0 的数据类型,相等性检查是不够的。

NULL 和 false 之间的最终检查应该返回 false,因为 NULL 意味着没有值。

虽然 false 表示该值存在,但它是空值或零值。但是,相等性检查返回 true。

<?php
    $zero_integer = 0;
    $zero_string = '0';
    $boolean_false = false;
    $null_value = NULL;

    echo "<h1>Loose Equality Check</h1>";

    if ($zero_integer == $zero_string) {
        echo "<strong>First check</strong>: Both " . $zero_integer . " and " . $zero_string . " are equal by value";
    }

    echo "<br />";

    if ($zero_integer == $boolean_false) {
        echo "<strong>Second check</strong>: Both " . $zero_integer . " and Boolean false are equal";
    }

    echo "<br />";

    if ($boolean_false == $null_value) {
        echo "<strong>Third check</strong>: Equality check says Boolean false and NULL are equal";
	}
?>

输出:

Loose Equality Check
First check: Both 0 and 0 are equal by value
Second check: Both 0 and Boolean false are equal
Third check: Equality check says Boolean false and NULL are equal

PHP 中的松散不等于检查

与松散相等检查一样,松散不相等检查在比较时不考虑数据类型。因此,你可以获得意想不到的结果。

我们的下一个代码示例基于前面的代码示例。但是,在这里,我们使用松散的、不相等的检查来执行比较。

所有检查都将返回 false。这是因为松散的不等于运算符考虑变量的值而不是数据类型。

<?php
    $zero_integer = 0;
    $zero_string = '0';
    $boolean_false = false;
    $null_value = NULL;

    echo "<h1>Loose Not Equal Check</h1>";

    if ($zero_integer != $zero_string) {
        echo "This statement will not print";
    } else {
        // This code will run
        echo "Loose not equal thinks zero integer and zero string should be equal";
    }

    echo "<br />";

    if ($zero_integer != $boolean_false) {
        echo "This statement will not print";
    } else {
        echo "Loose not equal consider zero integer and Boolean false as equal";
    }

    echo "<br />";

    if ($boolean_false != $null_value) {
        echo "This statement will not print";
    } else {
        echo "Loose not equal thinks a null value and Boolean false are equal";
    }
?>

以下输出来自每个比较的 else 块:

Loose Not Equal Check
Loose not equal thinks zero integer and zero string should be equal
Loose not equal consider zero integer and Boolean false as equal
Loose not equal thinks a null value and Boolean false are equal

PHP 中严格的相等检查

顾名思义,严格相等检查在比较期间是严格的。这意味着严格相等检查变量的值和数据类型是否相等。

通过严格的相等性检查,一种字符串格式在数量上永远不会等于一。此外,布尔 false 将不等于零。

在我们的下一个代码块比较期间,所有检查都将返回有关变量的适当信息。

<?php
    $zero_integer = 0;
    $zero_string = '0';
    $boolean_false = false;
    $null_value = NULL;

    echo "<h1>Strict Equality Check</h1>";

    if ($zero_integer === $zero_string) {
        echo "This statement will not print";
    } else {
        echo "Zero integer and zero string are not equal.";
    }

    echo "<br />";

    if ($zero_integer === $boolean_false) {
        echo "This statement will not print";
    } else {
        echo "Zero integer and Boolean false are not the same.";
    }

    echo "<br />";

    if ($boolean_false === $null_value) {
        echo "This statement will not print";
    } else {
        echo "NULL and Boolean false are not the same.";
    }
?

以下输出来自每个比较的 else 块:

Strict Equality Check
Zero integer and zero string are not equal
Zero integer and Boolean false are not the same
NULL and Boolean false are not the same

PHP 中的严格不等于检查

当比较数据和变量不等于时,严格的不等于检查将返回正确的结果。

当你运行下一个代码块时,你将获得有关比较的正确结果。

<?php
    $zero_integer = 0;
    $zero_string = '0';
    $boolean_false = false;
    $null_value = NULL;

    // The space at the beginning of
    // the string is not a mistake.
    $comparison_end_quote = " do not belong to the same data type.";

    echo "<h1>Strict Not Equal Check</h1>";

    if ($zero_integer !== $zero_string) {
        echo "True. Zero integer and zero String" . $comparison_end_quote;
    }

    echo "<br />";

    if ($zero_integer !== $boolean_false) {
        echo "True. Boolean false and zero Integer" . $comparison_end_quote;
    }

    echo "<br />";

    if ($boolean_false !== $null_value) {
        echo "True. Boolean is not NULL.";
    }
?>

输出:

Strict Not Equal Check
True. Zero integer and zero String do not belong to the same data type.
True. Boolean false and zero Integer do not belong to the same data type.
True. Boolean is not NULL.
作者: Habdul Hazeez
Habdul Hazeez avatar Habdul Hazeez avatar

Habdul Hazeez is a technical writer with amazing research skills. He can connect the dots, and make sense of data that are scattered across different media.

LinkedIn

相关文章 - PHP Operator