ОПЕРАТОР ЕКВІВАЛЕНТНОСТІ (===) Іноді звичайний оператор порівняння == працює не зовсім коректно, точніше не так, як нам хочеться, в деяких ситуаціях навіть виходять міні-анекдоти. Розглянемо наступний приклад: <? $х = 0; // число, рівне 0 $s = ""; //пустий рядок echo gettype($x)."\n"; echo gettype($s)."\n";if ($x==$s) echo "x =s";?> Змінні $х і $s не можуть бути рівні навіть з логічної точки зору, програма спочатку виводить повідомлення про те, що змінна $х є цілим числом (integer), а змінна $s — рядком (string). A після цього програма повідомляє, що змінні рівні. Вся справа тому, що PHP трактує одну із змінних (яку саме — не знаю, оскільки і 0, і " " — це false, цілком може бути, що інтерпретатор вважає логічним обидві змінні), як логічну змінну, а якщо хоч би одна змінна логічна, то друга теж вважається логічною. Тому ми отримуємо false==false, отже, програма виведе рядок "x=s". Щоб уникнути подібної ситуації, потрібно використовувати оператора еквівалентності = = =. Якщо модифікувати нашу програму так: <? $х = 0; // число, рівне 0 $s = ""; //пустая рядок echo gettype($x)."\n"; echo gettype($s)."\n"; if ($x===$s) echo "x =s"; ?> то зараз рядок "x=s" виведена не буде. Проведемо ще один експеримент; з використанням масивів. Розумію, що про масиви в PHP ви ще нічого не знаєте, але зараз просто необхідно забігти небагато наперед. <? $A = array('l'=>'0001'); // використовуються апострофи, а не лапки $В = array('2'=>'0010'); if ($А == $B) echo "A= -В".; if ($А === $B) echo "A= = =B"; ?> Буде виведений перший рядок, але не друга. У версіях PHP 4.0.x і нижче масиви $А і $в перетворювалися в рядки "array", які і порівнювалися. Ось через це оператор == неправильно працював. Оператор === із самого початку позбавлений цього недоліку. Зараз у мене встановлена версія 4.1.2 (не найновіша), але в ній оператор == працює коректно. Для оператора === повинен бути зворотний оператор !===, але його немає. Якщо ви напишете: if ($А !=== $B) echo "A<>B"; ви отримаєте повідомлення про помилку. Але можна обійти цю незручність так: if (!($А === $B)) echo "A<>B";