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


 

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

76438. Усыновление. Понятие, значение, порядок усыновления 16.4 KB
  Понятие значение порядок усыновления Усыновление представляет собой правовой институт призванный создать между усыновителем и усыновленным отношения наиболее близкие к тем которые возникают между родителями и родными детьми. Усыновление или удочерение далее усыновление является приоритетной формой устройства детей оставшихся без попечения родителей п. Усыновление допускается в отношении несовершеннолетних детей и только в их интересах с соблюдением требований абзаца третьего пункта 1 статьи 123 СК РФ а также с учетом возможностей...
76439. Дети, подлежащие усыновлению. Лица которые могут быть усыновителями 20.88 KB
  Поэтому при усыновлении ребенка должны учитываться его этническое происхождение; принадлежность к определенной религии и культуре родной язык возможность обеспечения преемственности в воспитании и образовании а также возможность обеспечить усыновляемым детям полноценное физическое психическое духовное и нравственное развитие п. 124 СК закреплено правило согласно которому усыновление братьев и сестер разными лицами не допускается так как при усыновлении прекращаются правоотношения ребенка не только с родителями но и с другими...
76440. Условия усыновления 18.15 KB
  129 СК специально оговорено что при усыновлении ребенка несовершеннолетних родителей которые не достигли возраста шестнадцати лет требуется также согласие их родителей или опекунов попечителей а при отсутствии родителей или опекунов попечителей согласие органа опеки и попечительства. Если законные представители несовершеннолетних родителей не выразили согласия на усыновление ребенка то усыновление не может состояться...
76441. Тайна усыновления и меры по ее обеспечению 13.95 KB
  Тайна усыновления ребенка должна соблюдаться лишь по желанию усыновителей что главным образом касается случаев усыновления малолетних детей новорожденных детей и иных случаев когда целесообразность обеспечения тайны усыновления не вызывает сомнений. Иногда усыновители по какимлибо причинам педагогического морального или иного свойства не считают нужным сохранять тайну усыновления и не скрывают от ребенка факта его усыновления. Таким образом тайна усыновления охраняется законом но не всегда является обязательным элементом любого...
76442. Правовые последствия усыновления 15.11 KB
  Если ребенок имеет кровного родителя и усыновлен одним лицом другого пола При усыновлении ребенка не всегда разрываются все его связи с кровными родственниками например мать ребенка вступила в новый брак и ребенка усыновил отчим. Однако закон сохраняет право родителя ребенка на сохранение правовых отношений с ним не только для тех случаях когда ребенка усыновил отчим мачеха а для всех случаев когда ребенок усыновлен только одним лицом и при этом ребенок имеет кровного родителя другого пола чем усыновитель. Закон формулирует это...
76443. Отмена усыновления ребенка 15.27 KB
  Однако могут быть и другие ситуации например не сложились семейные родственные отношения усыновителя и ребенка или тяжелая болезнь усыновителя и т. Во всех случаях суд тщательно изучает все обстоятельства конкретного дела и вправе отменить усыновление ребенка исходя из его интересов и с учетом его мнения п. Порядок отмены усыновления Отмена усыновления ребенка производится в судебном порядке п.
76444. Правовые последствия отмены усыновления 13.52 KB
  При отсутствии родителей а также если передача ребенка родителям противоречит его интересам ребенок передается на попечение органа опеки и попечительства. Изменение имени отчества или фамилии ребенка достигшего возраста десяти лет возможно только с его согласия. Суд исходя из интересов ребенка вправе обязать бывшего усыновителя выплачивать средства на содержание ребенка.
76445. Опека и попечительства как форма семейного воспитания детей 16.24 KB
  Опекун попечитель назначается органом опеки и попечительства №48ФЗ от 24. В соответствии с Семейным и Гражданским кодексами РФ дети находящиеся под опекой попечительством имеют право на: воспитание в семье опекуна попечителя заботу с их стороны; совместное с ним проживание исключения допускаются с разрешения органа опеки и попечительства когда подопечный достиг возраста 16 лет и раздельное проживание не отразится неблагоприятно на его воспитании и защите прав и интересов; обеспечение условий для содержания воспитания...
76446. Права и обязанности опекунов и попечителей 27.96 KB
  Проживание будущего опекуна или попечителя и его потенциального подопечного по разным адресам может породить проблему выбора места установления опеки и попечительства. При этом в отдельных случаях при наличии заслуживающих внимания обстоятельств допускается установление опеки попечительства по месту проживания кандидата в опекуны и попечители например если он уже привез к себе нуждающегося в помощи гражданина либо не имеет возможности долго находиться в доме будущего подопечного. Но потом личное дело подопечного где хранится вся...