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


 

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

5520. Изучение нормативного метода учета затрат и калькулирования себестоимости продукции 145 KB
  Управленческий учет - процесс, происходящий внутри фирмы с использованием функций учета, планирования, контроля и оценки её деятельности, организационной работы, стимулирования и информационных связей по координированию действий. Акту...
5521. Формирование национальной культуры в эпоху колониальных поселений в Америке 537 KB
  Сегодня, говоря о Соединенных Штатах Америки, многие представляют себе современное, мощное государство с высоким уровнем жизни населения и устоявшимися демократическими институтами. Но все ли в порядке в этой стране, имеют ли граждане США...
5522. Проектирование поворотного крана на неподвижной основе с электромагнитным захватом 819.5 KB
  Цель работы - спроектировать поворотный кран на неподвижной основе с электромагнитным захватом. В настоящем курсовом проекте приведены расчёты по проектированию крана настенного и расчеты параметров электромагнитного захвата. Проект состоит из ...
5523. Физико-математические принципы построения и концептуальный анализ первичных уравнений современной полевой теории электромагнетизма 449.5 KB
  Физико-математические принципы построения и концептуальный анализ первичных уравнений современной полевой теории электромагнетизма Известно, что в теории электричества базовой физической характеристикой материального тела является его электрический...
5524. Воля. Лекционное занятие. Методический проект. Проявления волевого поведения на практике 120 KB
  Воля Аудитория: студенты 2 курса дневного отделения факультета психологии. Обоснование темы: Волевые способности есть у каждого человека, лишь степень их развития может быть разной. Без воли человек не был бы те, кем является, а именно, разумным сущ...
5525. Климатическое описание воздушных трасс субарктической зоны 108 KB
  Климатическое описание воздушных трасс субарктической зоны. Введение. При организации воздушных рейсов различной протяженности должны быть обеспечены безопасность, высокая регулярность и экономичность полетов. В решении этих задач важную роль играет...
5526. Розрахунок аерації промислових будівель 115.82 KB
  Аерація промислових будівель Аерація - це організована та керована загальнообмінна природна вентиляція. При аераци зовнішнє повітря поступає у приміщення крізь відчинені нижні отвори - фрамуги вікон. Внутрішнє відпрацьоване повітря, що виносить...
5527. Сельское хозяйство Болгарии 57.5 KB
  Сельское хозяйство Болгарии Республика Болгария, государство в Восточной Европе. Болгария расположена в восточной части Балканского полуострова. Граничит на севере с Румынией - вдоль Дуная, на юге - с Грецией и Турцией, на западе...
5528. Процесс учета вложений в во внеоборотные активы действующей организации на примере ООО Металлострой 156 KB
  В настоящее время основной и важной задачей Российского Правительства и всех властных структур является развитие экономики нашей страны и, прежде всего производства. А согласно мнению многих специалистов для этого необходимы долгосрочные...