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


 

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

21922. Технологічний процес виробництва горілок, горілок особливих та лікеро-горілчаних виробів 238.5 KB
  Львівський Лікеро - Горілчаний Завод є перший виробник на Україні горілчаної продукції. Горілка порівняно недавній винахід людства. До появи горілки на Галичині прості галичани пили пиво, шляхта - вино, і лише наприкінці 18 ст. в Галичині зявляється мода на горілку
21923. ЭНЕРГЕТИЧЕСКИЕ УСТАНОВКИ КОРАБЛЕЙ 127 KB
  Назначение состав и особенности размещения энергетических установок на надводных кораблях. Устройство и живучесть надводного корабля. Это повлекло за собой усовершенствование конструкции парусного вооружения и способов управления парусами что позволило отказаться от весел сначала на крупных а затем и на остальных кораблях. Наряду с обеспечения движения корабля они стали снабжать оружие и технику различными видами энергии а также использоваться для улучшения обитаемости.
21924. ЗАЩИТА КОРАБЛЯ 142 KB
  ЛЕКЦИЯ: ЗАЩИТА КОРАБЛЯ. УЧЕБНЫЕ ВОПРОСЫ ОСНОВНАЯ ЧАСТЬ: Понятие о конструктивной защите и физических полях корабля. Основные физические поля корабля и способы их снижения. Размагничивающее устройство корабля.
21925. ЖИВУЧЕСТЬ КОРАБЛЯ 151 KB
  ЛЕКЦИЯ: ЖИВУЧЕСТЬ КОРАБЛЯ. УЧЕБНЫЕ ВОПРОСЫ ОСНОВНАЯ ЧАСТЬ: Понятие о живучести корабля и ее элементах. Обеспечение живучести корабля Организация борьбы за живучесть корабля ЗАКЛЮЧЕНИЕ. Устройство и живучесть надводного корабля.
21926. ПОНЯТИЕ ОБ УСТРОЙСТВЕ ПОДВОДНОЙ ЛОДКИ 127.5 KB
  Подводная лодка ПЛ представляет собой боевой корабль способный вести боевые действия как в надводном так и в подводном положении. Ввиду того что при нахождении ПЛ в подводном положении легкий корпус не испытывает гидростатического давления воды его конструкция определяется главным образом соображениями прочности при погружении всплытии и плавании в надводном положении. а Плавучесть подводной лодки Плавучестью ПЛ называется ее способность плавать по заданную ватерлинию в надводном положении и на определенных глубинах не...
21927. БОЕВЫЕ И МОРЕХОДНЫЕ КАЧЕСТВА КОРАБЛЯ 140.5 KB
  ЛЕКЦИЯ: БОЕВЫЕ И МОРЕХОДНЫЕ КАЧЕСТВА КОРАБЛЯ. УЧЕБНЫЕ ВОПРОСЫ ОСНОВНАЯ ЧАСТЬ: Понятие о боевых качествах корабля. Основные сведения о мореходных качествах корабля. Понятие об эксплуатационной прочности корабля.
21928. Устройство надводного корабля 102.5 KB
  Тема: Устройство надводного корабля. Основные сведения по геометрии корпуса корабля. Составные части корпуса корабля и их общая характеристика. Назначением боевого корабля является ведение боевых действий на море.
21929. Общекорабельные системы и корабельные устройства 88.5 KB
  Боевая и повседневная деятельность обуславливает необходимость оборудование кораблей различными техническими средствами при помощи которых могли бы эффективно решаться следующие задачи: Борьба за непотопляемость корабля путем удаления воды из затопленных отсеков а также приемом и перекачиванием жидкого балласта для спрямления поврежденного корабля. Противоатомная защита корабля от радиоактивного заражения. Удаление с корабля трюмной воды различных нечистот и грязной воды. Корабельными системами называется совокупность специализированных...