3 разных равных

В чем разница между =, ==, а также ===?

Я думаю, что использование одного знака равенства — для объявления переменной, в то время как два знака равенства — для условия сравнения, и, наконец, три знака равенства — для сравнения значений объявленных переменных.

134

Решение

У тебя есть = оператор присваивания, == оператор сравнения «равный» а также === «одинаковый» оператор сравнения.

$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)

Для получения дополнительной информации о необходимости == а также ===и ситуации, чтобы использовать каждый, посмотрите на документы.

162

Другие решения

  • = является оператором присваивания
  • ==
    является оператором сравнения (проверяет,
    две переменные имеют одинаковые значения)
  • === это идентичное сравнение
    оператор (проверяет наличие двух переменных
    имеют равные значения и одинаковы
    тип).
21

= оператор присваивания

== проверяет, имеют ли две переменные одинаковое значение

=== проверяет, имеют ли две переменные одинаковое значение И, если их типы одинаковы

7

Для опытных пользователей PHP, знающих разницу между ==а также === и спрашивая себя «это быстрее сравнить с == или с === когда я уверен, что оба операнда одного типа? «

Краткий и общий ответ: Там нет увеличения производительности при использовании === в этом случае, так что вы, вероятно, должны использовать ==,

Для тех, кто заинтересован в ее тестировании, вы можете использовать следующий код, написанный мною, и попробовать разные значения для $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";
?>

ПРИМЕЧАНИЕ. Сравнение действительно только тогда, когда каждая «ПЕРВАЯ ПОПРОБОВКА» очень близка к «ВТОРОЙ ПОПЫТКЕ». Если они существенно различаются, это означает, что процессор был занят чем-то другим, выполняя сравнения, и поэтому результаты ненадежны, и тест должен быть запущен снова.

1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector