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


 

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

51443. Выбор модели методом шаговой регрессии 33 KB
  Составить множество регрессоров, включив в него факторы, квадраты факторов и их взаимные произведения Проверить условие Fk1k2 Fpk1k2 выполнение которого свидетельствует о целесообразности произведенного усложнения модели что обусловило существенное увеличение точности аппроксимации моделью исходных данных.
51444. Выделение тренда и прогнозирование временного ряда в EXCEL 44 KB
  В поле диаграммы вызвать контекстное меню для элемента Ряд данных выбрать команду Добавить линию тренда. В окне Линия тренда выбрать линейный вид тренда. На вкладке Параметры исправить название линии тренда и отметить: Показать уравнение тренда; Добавить коэффициент аппроксимации.
51445. Оценка надежности прогноза по МНК 68 KB
  Для прогноза временного ряда использовать два уравнения тренда со степенью полинома : 1 и со степенью полинома : . Для оценки надежности прогноза для трех точек по двум моделям 1 и 2 использовать встроенную функцию ТЕНДЕНЦИЯY X 3_прогнозных_ значения константа. Рассчитать квадраты невязок для трех точек прогноза на всех этапах.
51446. Сглаживание временных рядов с помощью скользящего интервала. Применение статистики Дарбина-Уотсона 76.5 KB
  Значение тренда в средней точке СИ равно средневзвешенному значению точек исходного ряда: 1 где весовые коэффициенты. Для степени полинома весовые коэффициенты. Весовые коэффициенты для сглаживания p=2. NN q Sum Весовые коэффициенты...
51447. Маркетинг. Социально-экономические основы маркетинга 60.94 KB
  Выражаются в товарах, способных удовлетворить нужду тем способом, который присущ данному укладу общества. Для удовлетворения потребностей, производители предпринимают целенаправленные действия, стимулирующие действия обладать товаром, таким образом производитель может способствовать формированию потребности, но не может создать нужду, т.к она уже существует.
51448. Силові перетворювачі автоматизованих електроприводів. Методичні вказівки 44 KB
  Мета роботи: закріплення знань про принципи дії однофазних однополуперіодних схем випрямлення, розрахунок, моделювання та дослідження часових діаграмм. Теоретичні відомості Випрямлячем називається статичний перетворювач електричної енергії змінного струму в постійний струм. Перетворювач являє собою електричний агрегат, силова частина якого складається в загальному випадку, з наступних основних вузлів
51449. ПРОЕКТИРОВАНИЕ ЛОКАЛЬНОЙ ВЫЧИСЛИТЕЛЬНОЙ СЕТИ ОРГАНИЗАЦИИ С ПРИМИНЕНИЕМ СТРУКТУРИРОВАННОЙ КАБЕЛЬНОЙ СИСТЕМЫ 3.01 MB
  В курсовом проекте предлагается спроектировать ЛВС организации с применением структурированной кабельной системы. Назначение проектируемой ЛВС – обеспечение возможности информационного обмена между рабочими станциями организации.