69688

ОПЕРАТОР ЕКВІВАЛЕНТНОСТІ (===)

Лекция

Информатика, кибернетика и программирование

Іноді звичайний оператор порівняння == працює не зовсім коректно, точніше не так, як нам хочеться, в деяких ситуаціях навіть виходять міні-анекдоти. Розглянемо наступний приклад...

Украинкский

2014-10-08

28 KB

0 чел.

Тема 7: ОПЕРАТОР ЕКВІВАЛЕНТНОСТІ (===)

Іноді звичайний оператор порівняння == працює не зовсім коректно, точніше не так, як нам хочеться, в деяких ситуаціях навіть виходять міні-анекдоти. Розглянемо наступний приклад:

<?

$х   = 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";


 

А также другие работы, которые могут Вас заинтересовать

73630. Риск-менеджмент в организации 144.78 KB
  Рискменеджмент в организации Система управления риском. Развитие концепции управления риском. Общая характеристика системы управления риском. Свойства системы управления риском.
73631. СВІТОВА ВАЛЮТНА СИСТЕМА 376 KB
  Ця мета потребує щоб: окремі країни проводили економічну та фінансову політику яка б сприяла підтриманню збалансованої міжнародної системи платежів; фінансові механізми забезпечували регулювання платіжного балансу; уряди сприяли збереженню рівноваги на ринках іноземної валюти. Основні елементи національної і світової валютних систем Національна валютна система Світова та міжнародна валютні системи Національна валюта Резервні валюти міжнародні рахункові валютні одиниці Умови конвертування національної валюти Умови взаємного конвертування...
73632. Міжнародна міграція робочої сили 206.5 KB
  Міжнародна міграція робочої сили. Регулювання міжнародної міграції робочої сили. Сутність структура та основні риси світового ринку праці Одним із важливих елементів глобальної економічної системи на яку перетворився світ наприкінці другого тисячоліття є міжнародний ринок праці з його уніфікованою шкалою критеріїв щодо якості трудових ресурсів розвитком нових форм зайнятості гнучкістю та надзвичайною мобільністю сукупної робочої сили. Світовий міжнародний ринок праці це система відносин що виникають між державами з приводу...
73633. Міжнародні розрахунки і платіжний баланс 121.5 KB
  Економічний зміст платіжного балансу та методологія складання. Економічний зміст платіжного балансу та методологія складання. Стан платіжного балансу визначає попит і пропозицію національної й іноземної валюти в цей момент і він є одним із факторів формування валютного курсу. Прибуткові та витратні статті балансу міжнародних рахунків Прибуткові статті Джерела грошових коштів Витратні статті Способи використання грошових коштів Експорт товарів та послуг Імпорт товарів та послуг Приток капіталу Вивіз капіталу Приватні та...
73634. Реформы А.Н. Косыгина и причины их неудач 73.1 KB
  Для изучения этой системы и хода реформы дают материал интервью взятые у министра легкой промышленности СССР 1965 1980 гг. начальника главного управления трикотажной и текстильногалантерейной промышленности Софьи Николаевны Чупрыгиной. Министерство легкой промышленности СССР являлось такой же частью системы государственного управления как другие министерства и принципы его работы были такими же как у них. он прошел путь от сменного мастера на Ореховозуевском хлопчатобумажном комбинате до министра легкой промышленности СССР.
73635. Ответственность организаций и исполнителей за нарушение метрологического обеспечения 75.5 KB
  Дисциплинарная и материальная ответственность исполнителей за нарушение законодательства о метрологическом обеспечении производства и испытаний продукции Федеральный закон Российской федерации О техническом регклировании постатейный коментарий...
73637. Співвідношення культури та цивілізації 1.5 MB
  Співвідношення культури та цивілізації Певні теоретичні міркування саме під таке розуміння цивілізованості підвів американський соціолог та культуролог Л. Морган намагався відрізняти давні перші цивілізації від сучасної цивілізації яка У базується на наукових знаннях та технічних досягненнях Упередбачає високий рівень культури релігійної свободи демократичних прав правового регулювання міжнародних відносин. Досить резонансною та багато в чому пророчою постала книга Освальда Шпенглера Занепад Європи в якій цивілізація...
73638. Статистика населения 160.5 KB
  Для полного и точного учета численности населения необходимо определить границы территории, на которой учитывается население, и установить время, к которому относятся данные о численности населения. Учет населения производится по населенным пунктам