V PHP se často využívají funkce, které ověřují stav proměnné (existence, obsah, datový typ atp.). Zde je výběr nejpoužívanějších.
Tento skriptík demonstruje, jak se zpracovávají různé vstupy odesílané na server v URL. Očekává hodnotu v proměnné a:http://.../get.php?a=5
Otestujte různé varianty URL a všímejte si výsledků, které vrací níže uvedené funkce var_dump()
, isset()
, empty()
, gettype()
a základní matematické operace:
.../get.php?a=5
.../get.php?a=5w
.../get.php?a=w5
.../get.php?a=
.../get.php?a
.../get.php
Tato funkce navíc vrací i hodnotu proměnné včetně jejího datového typu. Hodí se při ladění programu nebo hledání chyb ve skriptu. Níže je výpis pomocí tohoto kódu:
<?php
$a = $_GET['a'];
var_dump($a);
?>
NULL
Všimněte si, že i když je zadáno číslo, $_GET
načte hodnotu jako řetězec (string). Toto není chyba, ale vlastnost. Je na tvůrci skriptu, jak vstupní hodnotu otestuje a zpracuje. Např. číslo jde "vynutit" pomocí <input type="number">
.
Používá se pro kontrolu, zda proměnná vůbec existuje. Vrací logickou hodnotu TRUE (existuje) nebo FALSE (neexistuje). Otestujte různé varianty URL a všímejte si výsledků. Níže je výpis pomocí tohoto kódu:
<?php
$a = $_GET['a'];
var_dump($a);
?>
bool(false)
Vrací logickou hodnotu TRUE (není nastavena nebo má hodnotu 0) nebo FALSE (je nastavena). Níže je výpis pomocí tohoto kódu:
<?php
$a = $_GET['a'];
var_dump(empty($a));
?>
bool(true)
Tento způsob ověření se hodí v případě, že jsou vstupní hodnoty načítané formulářem i výkonný skript, který je zpracovává v jednom PHP spuboru. Je to nejjednodušší řešení, jaké jde napsat.
if ($_GET) {
//TRUE - v GET něco je
} else {
//FALSE - v GET nic není
}
V GET nic není.
Zde si všimněte jedné "zajímavé" věci. Pokud je zadán řetězec, který má na začátku číslo (např. 4abc, 125km, 123abc123) bude text i vše za ním ignorováno (přestože var_dump() bude hlásit "string"). Je zřejmé, že toto chování nelze ve skriptech běžně využívat a je nutné vždy rozlišovat mezi číslem a řetězcem.
NULL
Protože má PHP dynamické typování, není vždy jasné, jakého typu bude výsledek výrazu. Funkce vrací názvy string
, integer
, float
nebo boolean
. Níže je výpis pomocí tohoto kódu:
<?php
$a = $_GET['a'];
echo gettype($a);
?>
NULL