Víte, jak se chová zákeřná PHP funkce empty()?
PHP programátoři mají občas nejasnosti s tím, co vrací PHP funkce empty(). Máte prázdnou proměnnou, neexistující proměnnou, prázdné pole nebo proměnnou s hodnotou 0 (nula) či NULL. Víte, co vám empty() v jednotlivých případech vrátí? A aby toho nebylo málo, mrkneme i na isset().
Existuje proměnná nebo ne? Zjistíte to pomocí isset()
Pokud chcete pracovat s proměnnou či polem a nevíte, jestli proměnná/pole existuje, ověřte to pomocí isset(). Například takto:
if (isset($moje_promenna)) { echo 'existuje'; } else { echo 'neexistuje'; }
Pokud existenci proměnné/pole před použitím neověříte, PHP vám vypíše upozornění na práci s neexistující proměnnou (E_NOTICE). Programátoři C/C++ by se takového prohřešku, jako je práce s neexistující proměnnou, zajisté nedopustili :)
Pokud proměnná existuje a obsahuje hodnotu NULL, vypíše se „neexistuje“ (za doplnění děkuji Jakubu Boučkovi).
$moje_promenna = NULL; // vypíše se „neexistuje“
Je proměnná prázdná? Zkuste empty()
Nejlepší bude, když si ukážeme přímo na příkladech, jak funkce empty() pracuje.
Proměnnou $s postupně naplníme různými hodnotami (viz dále) a otestujeme ji následujícím kódem:
if (empty($s)){ echo 'JARO'; } else { echo 'PODZIM'; }
Co proměnná vrátí je uvedeno hned za hodnotou, jako komentář.
$s = 0; // JARO $s = '0'; // JARO $s = ''; // JARO $s = NULL; // JARO $s = FALSE; // JARO $s = array(); // JARO $s = 1; // PODZIM $s = 2; // PODZIM $s = -1; // PODZIM $s = 'NULL'; // PODZIM $s = 'TRUE'; // PODZIM $s = 'FALSE'; // PODZIM $s = TRUE; // PODZIM $s = array(0); // PODZIM $s = array('0'); // PODZIM $s = array(''); // PODZIM $s = array(NULL); // PODZIM $s = array(FALSE); // PODZIM $s = array(TRUE); // PODZIM $s = array(array()); // PODZIM $s = array(1); // PODZIM $s = array(1 => FALSE); // PODZIM $s = array(1 => TRUE); // PODZIM $s = array(1 => NULL); // PODZIM $s = array(1 => 0); // PODZIM $s = array(1 => 1); // PODZIM $s = array(1 => ''); // PODZIM
Z příkladu je tedy patrné, že empty() vrací stejný stav (=proměnná je prázdná) nejen u prázdných řetězců, ale i u prázdných polí, číselných hodnot 0 (nula), a to i v případě, kdy je 0 (nula) zapsaná jako řetězec.
Comments ( 5 )