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";


 

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

19622. Будова і призначення електричної арматури. Проста електрична схема 36.43 KB
  Урок 26. Будова і призначення електричної арматури. Проста електрична схема 1 год. Мета уроку. Засвоєння знань про електричну арматуру ламповий патрон вимикач штепсельне зєднання просту електричну схему. Формування вмінь виконувати найпростішу електричну схему.
19623. Електроосвітлювальна арматура. Правила безпечної роботи 22.4 KB
  Урок 27. Електроосвітлювальна арматура. Правила безпечної роботи 1 год. Мета уроку. Засвоєння знань про технологію монтажу освітлювальної мережі правила безпечної роботи під час ремонту та експлуатації електричної мережі. Формування умінь приєднувати проводи до ел...
19624. Процесс выполнения креативной стрижки «Шапочка» 400.5 KB
  Благодаря появляющимся новым силуэтам и формам стрижек, причесок, человек приобретает надежду на то, чтобы соответствовать критериями современной моды. В процессе написания дипломной работы мною было изучено рабочее место парикмахера, виды инструментов, применяемых при стрижке и была рассмотрена креативная стрижка «шапочка». Прогресс парикмахерского искусства возможен благодаря применению совершенно новых современных методов вы
19625. Технологія вирощування овочевих культур 23.83 KB
  Урок 29. Технологія вирощування овочевих культур 1год. Мета уроку. Засвоєння знань про біологічну характеристику овочевих культур вимоги та способи підготовки ґрунту під овочеві культури. Сприяти розвитку інтересу до проведення дослідницької роботи з овочевими куль...
19626. Біологічна характеристика ягідних культур 64.1 KB
  Урок 30. Біологічна характеристика ягідних культур 1 год. Мета уроку. Засвоєння знань про біологічну характеристику ягідних культур вимоги до вирощування ягідних культур формування вмінь висаджувати суницю. Виховувати бережливе ставлення до природних ресурсів вод...
19627. Благоустрій і озеленення території 22.6 KB
  Урок. Благоустрій і озеленення території Мета уроку: Засвоєння знань про роль і місце зелених насаджень у житті людини умови використання у насадженнях різних порід породи декоративних і захисних рослин. Обєкт навчальної праці: проектування зелених насаджень ал
19628. Технологія вирощування кролів. Утримання кролів 217.68 KB
  Урок 32. Технологія вирощування кролів. Утримання кролів 1 год. Мета уроку. Засвоєння знань про тваринництво як галузь сільськогосподарського виробництва способи утримання кролів особливості догляду за приміщеннями для кролів. Розвивати пам'ять. Виховувати інтерес
19629. Годівля кролів 28.91 KB
  2 Урок 33. Годівля кролів 1 год. Мета уроку: Засвоєння знань про годівлю кролів профілактику захворювань кролів; формування вмінь здійснювати догляд за кролями. Розвивати пам'ять спостережливість. Виховувати інтерес до сільськогосподарських тварин. Об...
19630. Сферы применения маркетинга. Принципы маркетинга. Этапы развития маркетинга. Основные стратегии маркетинга 149.5 KB
  Занятие 1. Предмет и задачи курса. Сферы применения маркетинга. Принципы маркетинга. Этапы развития маркетинга. Основные стратегии маркетинга. Внешняя среда предприятия. Виды рынков. Сегмент рынка. Инструментарий маркетинга. Развитие предприятий на основе маркети