3 разных равны
В чем разница между =
, ==
и ===
?
Я думаю, что использование одного знака равенства означает объявление переменной, в то время как два знака равенства предназначены для условия сравнения, и, наконец, три знака равенства предназначены для сравнения значений объявленных переменных.
Ответы
Ответ 1
У вас =
оператор присваивания, ==
оператор сравнения 'equal' и ===
оператор 'идентичный'.
$a = $b Assign Sets $a to be equal to $b.
$a == $b Equal TRUE if $a is equal to $b.
$a === $b Identical TRUE if $a is equal to $b, and they are of the same type. (introduced in PHP 4)
Для получения дополнительной информации о необходимости ==
и ===
, а также о ситуациях, которые необходимо использовать, просмотрите документы.
Ответ 2
-
=
- оператор присваивания
-
==
является оператором сравнения (проверяет, если
две переменные имеют одинаковые значения)
-
===
- это тождественное сравнение
оператора (проверяет, являются ли две переменные
имеют одинаковые значения и имеют одинаковые значения
тип).
Ответ 3
= оператор присваивания
== проверяет, имеют ли две переменные одинаковое значение
=== проверяет, имеют ли две переменные одинаковое значение И если их типы одинаковы
Ответ 4
Простейшее объяснение, которое я знаю:
<?php
$a = 1;
$b = "1";
echo "comparing different types:<br/>";
compare($a, $b);
$a = 1;
$b = 1;
echo "comparing equal types:<br/>";
compare($a, $b);
function compare($a, $b)
{
if($a == $b)
echo "a == b<br/>";
if($a === $b)
echo "a === b<br/>";
}
?>
Ответ 5
Вы правы, что =
- оператор присваивания. Остальные два являются операторами сравнения, которые вы можете прочитать здесь здесь.
Ответ 6
Возможно, вы можете лучше понять разницу между == и === с примером, который включает автоматическое кастинг:
echo '"5 is not a number" == 5'."\n";
if("5 is not a number" == 5) {
echo "maybe there is something wrong here\n";
} else {
echo " The integer and the string are different\n";
}
echo '"5 is not a number" === 5'."\n";
if("5 is not a number" === 5) {
echo "maybe there is something wrong here\n";
} else {
echo " The integer and the string are different\n";
}
Ответ 7
Все остальные уточнили... Я просто хочу добавить пример, чтобы прояснить его больше:
<?php
$mystring = 'abc';
$findme = 'a';
$pos = strpos($mystring, $findme);
// Note our use of ===. Simply == would not work as expected
// because the position of 'a' was the 0th (first) character.
if ($pos === false) {
echo "The string '$findme' was not found in the string '$mystring'";
}
else {
echo "The string '$findme' was found in the string '$mystring'";
echo " and exists at position $pos";
}
?>
Ответ 8
Для продвинутых пользователей PHP, зная разницу между ==
и ===
и спрашивая себя ", быстрее сравнивать с ==
или с ===
, когда я уверен, что оба операнда одного типа?"
Короткий и общий ответ: В этом случае нет увеличения производительности при использовании ===
, поэтому вы, вероятно, должны использовать ==
.
Для тех, кто заинтересован в бенчмаркинге самостоятельно, вы можете использовать следующий код, который я написал ad-hoc, и попробуйте разные значения для $a
и $b
:
<?php
// CONFIGURATION
$cycles = 1000000;
$a = 'random string 1';
$b = 'random string 2';
// FUNCTIONS
function compare_two_equals($a, $b) {
if ($a == $b) {
return TRUE;
} else {
return FALSE;
}
}
function compare_three_equals($a, $b) {
if ($a === $b) {
return TRUE;
} else {
return FALSE;
}
}
// EXECUTION
$time = microtime(TRUE);
for ($count_a = 0; $count_a < $cycles; $count_a++) {
compare_two_equals($a, $b);
}
$time_two_a = microtime(TRUE) - $time;
$time = microtime(TRUE);
for ($count_a = 0; $count_a < $cycles; $count_a++) {
compare_three_equals($a, $b);
}
$time_three_a = microtime(TRUE) - $time;
$time = microtime(TRUE);
for ($count_a = 0; $count_a < $cycles; $count_a++) {
compare_two_equals($a, $b);
}
$time_two_b = microtime(TRUE) - $time;
$time = microtime(TRUE);
for ($count_a = 0; $count_a < $cycles; $count_a++) {
compare_three_equals($a, $b);
}
$time_three_b = microtime(TRUE) - $time;
$time = microtime(TRUE);
// RESULTS PRINTING
print "<br />\nCOMPARE == (FIRST TRY): " . number_format($time_two_a, 3) . " seconds";
print "<br />\nCOMPARE == (SECOND TRY): " . number_format($time_two_b, 3) . " seconds";
print "<br />\nCOMPARE === (FIRST TRY): " . number_format($time_three_a, 3) . " seconds";
print "<br />\nCOMPARE === (SECOND TRY): " . number_format($time_three_b, 3) . " seconds";
?>
ПРИМЕЧАНИЕ. Сравнение действительно только тогда, когда каждый "FIRST TRY" очень близок к "SECOND TRY". Если они существенно отличаются друг от друга, это означает, что процессор был занят чем-то другим во время выполнения сравнений, поэтому результаты ненадежны, и контрольный тест должен быть запущен снова.
Ответ 9
Следующая разница между =. ==. и ===:
= Оператор присваивания,
== Оператор сравнения "Равный" и
=== Идентичный оператор сравнения.
$a = $b
Назначьте $$ $равным $b.
т.е. $a = 5;
Итак, $присваивать значение 5.
$a == $b
Равно TRUE, если $a равно $b.
т.е. if($a==5)
Здесь мы видим, что мы используем == для сравнения значения.
$a === $b
Идентичный TRUE, если $a равно $b, и они одного типа. (введенный в PHP 4)
т.е. ($a ===5)
Это также используется для сравнения, но оно сравнивает значение, а также тип данных. Это означает $a = '5'
и $a = 5
не то же самое. $a = '5'
означает $присваивать строку '5' и $a=5
присваивать целочисленное значение 5.
Ответ 10
Оператор = присваивает значение переменной $ six = 6; значение 6 присваивается переменной $ шесть
== оператор проверяет, равны ли значения обеих переменных и используются ли они в основном в таких условиях, как операторы if
$a = 2;
$b = 2;
if ($a == $b) {
echo both variables have the same value;
}
=== Оператор похож на == (проверьте, равно ли значение), а также проверьте, если оба типа данных
$a = 2;
$b = "2";
if ($a === $b) {
echo "both variable have same value and of same data type";
} else {
echo 'both variable is either not equal or not of same data type';
}
//здесь $ a имеет тип int, тогда как $ b имеет тип string. Так что здесь вывод