Как известно, в 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().