Это все о типах данных. Возьмите BOOL
(true или false), например:
true
также равно 1
и
false
также равно 0
==
не заботится о типах данных при сравнении:
Поэтому, если у вас есть переменная, равная 1 (которая также может быть true
):
$var=1;
А затем сравните с ==
:
if ($var == true)
{
echo"var is true";
}
Но $var
на самом деле не равно true
, не так ли? Вместо этого он имеет значение int 1
, которое, в свою очередь, равно true.
При ===
типы данных проверяются, чтобы удостовериться, что две переменные / объекты / что угодно используют один и тот же тип.
Так что, если бы я сделал
if ($var === true)
{
echo "var is true";
}
это условие не будет истинным, поскольку $var !== true
оно всего лишь == true
(если вы понимаете, о чем я).
Зачем вам это нужно?
Просто - давайте рассмотрим одну из функций PHP: array_search()
:
Функция array_search()
просто ищет значение в массиве и возвращает ключ элемента, в котором было найдено значение. Если значение не может быть найдено в массиве, возвращается false, Но что если вы сделали array_search()
для значения, которое было сохранено в первом элементе массива (который имел бы ключ массива 0
) .... функция array_search()
вернет 0 ... что равно false ..
Так что, если вы сделали:
$arr = array("name");
if (array_search("name", $arr) == false)
{
// This would return 0 (the key of the element the val was found
// in), but because we're using ==, we'll think the function
// actually returned false...when it didn't.
}
Итак, вы видите, как это может быть проблемой сейчас?
Большинство людей не используют == false
при проверке, возвращает ли функция ложь. Вместо этого они используют !
. Но на самом деле это то же самое, что и использование ==false
, так что если вы сделали:
$arr = array("name");
if (!array_search("name", $arr)) // This is the same as doing (array_search("name", $arr) == false)
Так что для таких вещей вы бы использовали ===
вместо этого, чтобы проверить тип данных.