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


 

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

53786. Обобщение и систематизация знаний и умений по теме Квадратное уравнение и его корни 97 KB
  Учащиеся должны знать: определение квадратного уравнения; формулы дискриминанта корней квадратного уравнения; зависимость между значением дискриминанта и количеством корней квадратного уравнения. Учащиеся должны уметь: распознавать квадратные уравнения среди других уравнений; решать неполные квадратные уравнения по формуле корней квадратного уравнения; находить сумму и произведение корней приведенного квадратного...
53787. Конспекты занятий по математике 1.57 MB
  Из курса геометрии мы знаем что sin А = а соs А = . Затем выводилось основное тригонометрическое равенство: cos2 А sin2 А= = 1 Но есть недостатки этого метода. Если точка М числовой окружности соответствует числу t то абсциссу точки М называют косинусом числа t и обозначают cos t а ординату точки М называют синусом числа t и обозначают sin t слайд 5. Итак если М t = М х; у то х = cos t у= sin t слайд 5.
53788. Конспекты уроков русского языка 7 класс по учебнику Ладыженской Т. А. 2.85 MB
  Цели: систематизировать знания обучающихся о пунктуации повторить теоретический материал о разделах лингвистики закреплять умение выполнять синтаксический разбор предложения составлять схемы предложений; развивать внимание память такие операции мышления как анализ синтез обобщение; воспитывать интерес к предмету. Какие знаки препинания могут стоять в конце предложения Докажите на примерах из текста. С каким знаком препинания в конце предложения мы не встретились Придумайте...
53789. В гостях у Айболита. Посвящение в Айболята 503 KB
  Доктор Айболит: Ребята я получил письмо показывает его и зачитывает. Ребята а вы знаете мы ведь чуть не опоздали к вам вы уж нас простите пожалуйста. Ребята а как вы догадались что я доктор Айболит Дети: У вас белый халат. Доктор Айболит: Молодцы ребята Вы великолепно справились с первым испытанием.
53790. Баскетбол 96 KB
  Совершенствование техники ведения мяча: варианты ведения мяча без сопротивления и с сопротивлением защитника (обычное ведение и ведение со сниженным отскоком).
53791. КОНСПЕКТЫ УРОКОВ ПО ГЕОГРАФИИ 569.5 KB
  Её можно выразить количеством лет на которые должно хватить данного ресурса либо его запасами из расчёта на душу населения. Прочитайте текст учебника с 29 32 и ответьте на вопросы: Какова структура земельного мирового фонда Какие земли представляют наибольшую ценность в каких природных зонах сосредоточена большая часть обрабатываемых земель Какова доля пашни в земельном фонде планеты Какие процессы оказывают влияние на структуру земельного фонда планеты В чём заключается истощение земель Почему обеспеченность...
53792. Конспекты уроков по медиабезопасности 2.59 MB
  Материалы сексуального характера в Интернете. Виртуальные знакомства через Интернет. Задачи: информирование учащихся о видах информации способной причинить вред здоровью несовершеннолетнему; информирование учащихся о способах незаконного распространения информации в сетях Интернет и мобильной сотовой связи; обучение детей и подростков правилам ответственности и безопасности пользования услугами Интернета и мобильной сотовой связи; предупреждения совершения учащимися правонарушений. Ожидаемые результаты уроков медиабезопасности:...