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


 

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

56431. КРЕВСЬКА УНІЯ ТА СПРОБИ ЇЇ РЕАЛІЗАЦІЇ НА УКРАЇНСЬКИХ ЗЕМЛЯХ 311.5 KB
  Колишня київська Русь могла сплачувати щедру данину, мала розгалужені торговельні шляхи була спроможна надати Литві матеріальні ресурси і поповнення до війська. Не останню роль відігравав і династичний чинник - правляча литовська династія мала численних нащадків, що потребували власних уділів.
56432. Hörtexte und Aufgaben 138.5 KB
  Diese von mir gebildeten Aufgaben werden nach dem Hören des Textes gemacht. Sie haben nur eine Kontrollfunktion: Was haben die Schüler verstanden? Solche Aufgaben helfen dem Deutschlehrer bei der Arbeit an der Entwicklung der Sprechfertigkeit Hören.
56433. London. Known and Unknown 644.5 KB
  Objectives: to revise vocabulary and grammar of the topic; to summarize knowledge on the topic; to develop listening, reading, writing and speaking skills; to practice pair and group work.
56434. Перспективні напрямки розвитку санаторно-курортної діяльності 902 KB
  Система санаторно-курортних закладів розвивалась в межах державної системи охорони здоров`я, її послуги були соціально орієнтованими і достатньо дешевими для громадян (за рахунок фонду соціального страхування та інших джерел фінансування)
56438. The Beatles Party 124.5 KB
  Objectives: to involve students in extra-curriculum activities to improve students’ speaking skills and pronunciation to practice listening comprehension to develop students’ knowledge of the world musical culture
56439. The Beauty of the World Is in Danger 90 KB
  We discussed the problem of pollution at our previous lesson. And we have found out that many species of animals and plants are in danger. Your task was to find some information about them. Read your reports, please.