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


 

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

58441. Повторення теми «Одяг» 32 KB
  Мета. Повторити ЛО теми. Навчати діалогічного мовлення за темою. Практикувати у відповіді на запитання Whose is this? Увести та активізувати присвійні займенники в абсолютному відмінку
58443. Ляльки. Одяг 68 KB
  Take the short dress and colour it blue. Take the big boots and colour them black. Take the small shoes and colour them red. Take the new trousers and colour them grey.
58444. Герої мультфільмів 36 KB
  Jane came to visit Vicky. Look at picture b. What are they doing? Do you know this cartoon? Do you like it? Who are the characters in this cartoon? Do Jane and Vicky like it?icture. This is Sue again. Whats she wearing?
58445. Той ще не музика, хто в дудку дме. А. Григорук Той ще не музика, хто в дудку дме 35 KB
  У яку групу обєднаємо слова останньої групи Музичні інструменти. Як ви їх розумієте Прочитайте слова і вирази правильно наголошуючи один одному напівголосно. Поясніть її слова. Чому він винувато посміхнувся Чи підтримали їхню думку інші члени сімї
58446. Посилення колоніальної політики Російської імперії. Спроби ліквідації гетьманства 75.5 KB
  Спроби ліквідації гетьманства Становище в Україні після Полтавської битви. Заходи щодо економіки Гетьманщини. Україна від гетьманування Івана Скоропадського до Правління гетьманського уряду. Гетьман Іван Скоропадський.
58447. ПОДБОР И РАСЧЕТ ОСНОВНЫХЭЛЕМЕНТОВ ОДНОСТУПЕНЧАТОЙ ПАРОКОМПРЕССИОННОЙ ХОЛОДИЛЬНОЙ МАШИНЫ 237.93 KB
  Проведем тепловой, конструктивный и гидромеханический расчет теплообменных аппаратов: конденсатора и испарителя. Конденсатор выберем горизонтальный кожухотрубный с водяным охлаждением. Испаритель выбираем горизонтальный кожухотрубный затопленного типа.
58448. Регуляторні системи організму людини 33.5 KB
  Продовжити знайомити учнів з фізіологічними та функціональними системами організму людини; особливу увагу звернути на регуляції функцій та регуляторні системи організму; формувати уявлення про організм як цілісну саморегулювальну систему.
58449. АВТОМАТИЗАЦИЯ КОРМОПРОИЗВОДСТВА. АВТОМАТИЗАЦИЯ КОМБИКОРМОВЫХ АГРИГАТОВ 3.52 MB
  Оборудование комбикормовых цехов (ОКЦ) предназначено для производства рассыпных полнорационных комбикормов в сельскохозяйственных предприятиях и на межхозяйственных комбикормовых заводах.