Heim  >  Artikel  >  Backend-Entwicklung  >  Warum der gleiche Wert in PHP möglicherweise nicht gleich ist

Warum der gleiche Wert in PHP möglicherweise nicht gleich ist

PHPz
PHPzOriginal
2023-03-28 13:54:321383Durchsuche

In der Programmiersprache PHP werden identische Werte in manchen Fällen als ungleich betrachtet. Dies kann für einige unerfahrene Programmierer verwirrend sein, da in vielen anderen Programmiersprachen dieselben Werte oft als gleich angesehen werden. In diesem Artikel untersuchen wir, warum dieselben Werte in PHP möglicherweise nicht gleich sind.

Zunächst müssen wir die beiden Arten von Vergleichsmethoden in PHP verstehen: Wertevergleich und Typvergleich. Beim Wertevergleich gelten zwei Variablen als gleich, wenn ihre Werte gleich sind. Andererseits müssen bei einem Typvergleich die beiden Variablen nicht nur gleiche Werte haben, sondern auch den gleichen Typ haben.

Schauen wir uns einige Beispiele an, um dies besser zu verstehen. Angenommen, wir haben zwei Variablen $x und $y, die beide auf die Zahl 1 gesetzt sind. Im Wertevergleich fällt auf, dass sie gleich sind. Im folgenden PHP-Code gibt die Ausgabe $x == $y also true zurück: $ x == $ y返回true

$x = 1;
$y = 1;

if ($x == $y) {
    echo "x == y is true";
} else {
    echo "x == y is false";
}

然而,在类型比较中,情况可能会有所不同。让我们用一个例子来说明。假设我们有一个变量$x,它被设置为数字1,还有一个变量$y,它被设置为字符串“1”。在类型比较中,它们是不相等的,因为它们的类型不同。因此,在下面的PHP代码中,将输出 $x === $y返回false

$x = 1;
$y = "1";

if ($x === $y) {
    echo "x === y is true";
} else {
    echo "x === y is false";
}

现在,让我们来看看一些更为复杂的例子。我们假设有两个变量$a和$b,分别被设置为以下字符串:

$a = "apple";
$b = "apple";

在第一个例子中,我们对$a和$b这两个变量进行值比较。将输出 $a == $b返回true:

if ($a == $b) {
    echo "a == b is true";
} else {
    echo "a == b is false";
}

但是,在下一个例子中,我们对$a和$b这两个变量进行类型比较。将输出 $a === $b返回false

if ($a === $b) {
    echo "a === b is true";
} else {
    echo "a === b is false";
}

这是因为,尽管它们的值相同,但是它们的数据类型不同。因此,当进行类型比较时,它们被认为是不等的。

在PHP中,另一个可能导致相同值不等的因素是数据类型的自动转换。让我们看一个例子。假设我们有一个变量$x,它被设置为数字0,还有一个变量$y,它被设置为字符串“false”。在下面的代码中,我们对$x和$y进行“相同值不等”的比较,因为在这种情况下,PHP会将字符串“false”转换为数字0,以便进行比较。

$x = 0;
$y = "false";

if ($x == $y) {
    echo "x == y is true";
} else {
    echo "x == y is false";
}

上述代码中将输出 $x == $y返回true,尽管它们的数据类型不同。这是因为PHP根据它们的值计算它们相同。但是,在类型比较中,$x === $y将返回falserrreee

Bei Typvergleichen kann die Situation jedoch anders sein. Lassen Sie uns dies anhand eines Beispiels veranschaulichen. Angenommen, wir haben eine Variable $x, die auf die Zahl 1 gesetzt ist, und eine Variable $y, die auf die Zeichenfolge „1“ gesetzt ist. Bei einem Typenvergleich sind sie nicht gleich, weil ihre Typen unterschiedlich sind. Im folgenden PHP-Code wird also $x === $y ausgegeben und false zurückgegeben:

rrreee

Schauen wir uns nun ein komplexeres Beispiel an. Nehmen wir an, es gibt zwei Variablen $a und $b, die auf die folgenden Strings gesetzt sind: 🎜rrreee🎜 Im ersten Beispiel vergleichen wir die Werte der beiden Variablen $a und $b. Gibt „true“ für die Ausgabe $a == $b zurück: 🎜rrreee🎜 Im nächsten Beispiel führen wir jedoch einen Typvergleich für die beiden Variablen $a und $b durch. Gibt $a === $b aus und gibt false zurück: 🎜rrreee🎜Das liegt daran, dass ihre Datentypen zwar gleich sind, ihre Datentypen jedoch unterschiedlich sind. Daher werden sie bei Typvergleichen als ungleich betrachtet. 🎜🎜In PHP ist die automatische Konvertierung von Datentypen ein weiterer Faktor, der dazu führen kann, dass der gleiche Wert ungleich ist. Schauen wir uns ein Beispiel an. Angenommen, wir haben eine Variable $x, die auf die Zahl 0 gesetzt ist, und eine Variable $y, die auf die Zeichenfolge „false“ gesetzt ist. Im folgenden Code führen wir einen „gleicher Wert ungleich“-Vergleich von $x und $y durch, da PHP in diesem Fall die Zeichenfolge „false“ zum Vergleich in die Zahl 0 umwandelt. 🎜rrreee🎜Der obige Code gibt $x == $y aus und gibt true zurück, obwohl ihre Datentypen unterschiedlich sind. Dies liegt daran, dass PHP sie anhand ihrer Werte als gleich berechnet. Bei einem Typvergleich gibt $x === $y jedoch false zurück, da ihre Datentypen unterschiedlich sind. 🎜🎜Um es zusammenzufassen: Obwohl in einigen Fällen dieselben Werte in der PHP-Programmierung ungleich zu sein scheinen, liegt dies tatsächlich nur daran, dass PHP unterschiedliche Arten des Typvergleichs und der automatischen Typkonvertierung bietet. Beim Schreiben von Code müssen wir diese Unterschiede verstehen und entsprechend unseren Anforderungen die geeignete Vergleichsmethode auswählen. 🎜

Das obige ist der detaillierte Inhalt vonWarum der gleiche Wert in PHP möglicherweise nicht gleich ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn