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


 

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

64812. Заохочувальні адміністративні процедури 143.5 KB
  Актуальність визначення сутності заохочення як методу діяльності органів державного управління обумовлена потребою підвищення ефективності управлінського впливу на суспільні відносини які весь час змінюються і потребують адекватного правового регулювання.
64813. Наукові основи моделювання процесів різання з використанням числових методів 762.5 KB
  Теорія різання спираючись головним чином на глибокі експериментальні дослідження досягла значних успіхів не тільки у розумінні процесів та явищ що відбуваються під час стружкоутворення на контактних поверхнях різального інструмента та в обробленій поверхні...
64814. ОРГАНІЗАЦІЯ ВИСОКОПРОДУКТИВНИХ ТА ЕКОНОМІЧНИХ ОБЧИСЛЮВАЧІВ ДЛЯ СПЕЦІАЛІЗОВАНИХ СИСТЕМ 1022.5 KB
  Вирішення численних науковотехнічних завдань розвязання яких неможливе без використання високопродуктивних та економічних обчислювачів у звязку із підвищеними і специфічними вимогами до оброблення інформації. Такі завдання можна об'єднати в основні групи...
64815. ЛІКУВАННЯ УШКОДЖЕНЬ МІЖГОМІЛКОВОГО СИНДЕСМОЗУ ПРИ ТРАВМАХ ГОМІЛКОВОСТОПНОГО СУГЛОБА 441.5 KB
  Стандартною методикою оперативного лікування показання до якого розширюються з кожним роком повних розривів міжгомілкового синдесмозу є стабільний остеосинтез гомілкових кісток однимдвома шурупами уведеними з боку малогомілкової кістки у великогомілкову дистальне блокування.
64816. ТЕХНОЛОГІЧНІ ОСНОВИ КЕРУВАННЯ ЯКІСТЮ ПОВЕРХНЕВОГО ШАРУ ОПТИЧНИХ МАТЕРІАЛІВ ПРИ ЕЛЕКТРОННО-ПРОМЕНЕВІЙ МІКРООБРОБЦІ 3.99 MB
  Вперше аналіз електроннопроменевого впливу на мікрорельєф поверхні і ПШ германію та кремнію представлено в роботах Г. Ващенком розвинені математичні моделі та вперше розроблені наукові основи керування параметрами стрічкового електронного потоку при обробці оптичного скла і оптичних керамік...
64817. Мінливість ознак рижію ярого та створення нового вихідного матеріалу методом хімічного мутагенезу 456 KB
  Важливою задачею при створенні нових сортів ярого рижію є вивчення колекційних зразків з метою визначення кращих із них для подальшої селекційної роботи. Тому селекційні дослідження спрямовані на вивчення мінливості ознак рижію ярого й визначення ефективності...
64818. ТЕХНОЛОГІЯ ВІДНОВЛЕННЯ КАНАЛІЗАЦІЙНИХ КОЛЕКТОРІВ З ВИКОРИСТАННЯМ КОНСТРУКЦІЙ ІЗ ШЛАКОВОГО ЛИТТЯ 3.18 MB
  Значна частина каналізаційних мереж України перебуває у передаварійному та аварійному стані і потребує термінового відновлювання. Через корозію абразивний знос розгерметизацію стикових зєднань конструкції каналізаційних мереж передчасно руйнуються втрачаючи несучу здатність...
64819. ПАРАМЕТРИ ЗМІН ФІЗИКО-ХІМІЧНИХ ВЛАСТИВОСТЕЙ СІРОГО ЛІСОВОГО ҐРУНТУ ПІД ВПЛИВОМ УДОБРЕННЯ КУЛЬТУР І ПІСЛЯДІЇ ВАПНУВАННЯ 237 KB
  Метою досліджень було встановити закономірності впливу післядії вапнування з використанням різних систем удобрення на родючість сірого лісового ґрунту а саме: фізикохімічні властивості процеси перетворення кальцію вмісту гумусу агрохімічні...
64820. Фізичні поля прийомних криволінійних акустичних антен з екранами 9.9 MB
  Криволінійні антенні решітки що утворені з кругових циліндричних пєзокерамічних перетворювачів відносять до антен що знайшли найбільш широке застосування як у підводній електроакустичній апаратурі та пристроях так і в іншому обладнанні акустичної техніки.