Datové typy a výrazy
Pravdivostní hodnoty
TRUE,FALSE- case insensitive
explicitní konverze
(bool)(boolean)implicitní konverze
0,"",[],null→ FALSE
Celá čísla (integer)
- se znaménkem, 32- or 64-bit, znaménko (
+nebo-) - base 16 (0xA), 10 (10), 8 (012), 2 (0b1010)
PHP_INT_SIZE,PHP_INT_MAX,PHP_INT_MIN(PHP 7.0)- při overflow automaticky konverze na float
Čísla s plovoucí desetinou čárkou (float)
- podle normy IEEE 754, mantisa + exponent
- ztráta přesnosti
- nevhodné přímo porovnávat rovnost
Práce s čísly - konverze
Práce s čísly
ztráta přesnosti!
floor((0.1+0.7)*10); // 7 intval(19.99*100) // 1998porovnání desetinných čísel, pomocí
==nevhodné$a = 1.23456789; $b = 1.23456780; // presnost $epsilon = 0.00001; if (abs($a-$b) < $epsilon) ...
Řetězce
single quoted, nowdoc
$string = '$string'; $string = <<<'END' Variables are not expanded in nowdoc, try it: $string = $string; END;double quoted, heredoc
$string = "$string"; //empty string $string = <<<END Variables are expanded in heredoc, try it: \$string = $string; END;
Práce s řetězci - parsování proměnných
- jednoduchá syntaxe -
"$variable" - komplexní syntaxe -
"{$variable}"- umožňuje složitější výrazy např. volání funkcí
$numbers = [1 => 1, 2, 3];
echo "$numbers[2]";
function f()
{
return 'colors';
}
$colors = ['blue' => 0x0000FF, 'green' => 0x00FF00, 'red' => 0xFF0000];
echo "{${f()}['green']}";Práce s řetězci - přístup po znacích
[index]- nefunguje s multibyte řetězci!$string = 'abcde'; echo "{$string[0]}"; // => a- mb_substr()
viz také: substr(), substr_replace(),
Práce s řetězci - interní reprezentace
- pole bytů, vnitřně kódováno v ISO-8859-1 (Latin1)
- některé funkce nefungují s multibyte řetězci! - např.
strlen(),strpos() - rozšíření pro multibyte - mbstring, obvykle vestavěné
Práce s řetězci - konverze
- explicitně:
(string), strval() - boolean: TRUE →
1, FALSE →"" - objekty: __toString()
- serializace:
Pole
- uspořádaná mapa - klíč ⇒ hodnota
- automatické indexy (klíče) od
0nebo jako asociativní pole - použití
- vektor
- hash tabulka, slovník
Pole - literál
$array = [
"foo" => "bar",
42 => 24,
"multi" => [
"dimensional" => [
"array" => "foo"
]
]
];původní syntaxe array( … ), od PHP 7 pohodlnější [ … ]
Práce s polem - základní operace
- přidání prvku
- na konkrétní místo -
$a[10] = … - na konec pole -
$a[] = …
- na konkrétní místo -
- test existence -
isset($a[10]) - odstranění prvku -
unset($a[10])
Práce s polem
- konverze na pole - explicitně
(array) - porovnání
- přiřazení (kopírování)
- hodnotou -
$b = $a; - referencí (explicitně) -
$b = &$a;
- hodnotou -
Práce s polem
- Array functions
- iterování -
current,next,end,reset - test existence hodnoty -
in_array - test existence klíče -
array_key_exists - řazení -
sort,asort,ksort… - sloučení/rozdělení -
array_merge,array_merge_recursive,array_slice - fronta/zásobník -
array_push,array_pop,array_shift,array_unshift - mapování -
array_map, filtrování -array_filter - …
- iterování -