четверг, 23 мая 2013 г.

PHP: отличие 0 от false

Как известно, в PHP: 0, false, NULL - являются одним и тем-же. Но довольно часто необходимо четко различать 0 от false. Например в таком случае. Существует строка str и существует - str2. Необходимо узнать: является ли строка str2 подстрокой str1. Это можно сделать с помощью функции strpos.

$str="Сергей" ;
          $str2="Сер";
          $pos=strpos($str,$str2);

Которая может вернуть позицию вхождения подстроки, либо может вернуть false - если подстрока в строке вообще не существует. Но тут также есть загвоздка. А что, если позиция вхождения подстроки будет равна 0?
Далее следует проверка. Неопытный программист, коим являюсь я сделает так:
if($pos!=false){
           //делаем то и то..
          }

Интерпретатор ошибки или предупреждения не выдаст, а вот программист голову может поломать довольно долго над тем, почем программа работает не так.

Избавление от этой проблемы приходит с использованием функции is_bool($a), которая возвращает true в случае если ТИП $a является boolean. Поэтому вместо предыдущего if пишем следующее:
if( ! is_bool($pos)){
          //что-то делаем..
          }


Вообще в PHP четко следует знать и следить за состоянием переменных и элементов массивов. И использовать следующие ряд функций: is_null(), empty(), isset().

Комментариев нет:

Отправить комментарий