Jdi na navigaci předmětu

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)       // 1998
  • porovná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é

viz Details of string type

Práce s řetězci - konverze

Pole

  • uspořádaná mapa - klíč ⇒ hodnota
  • automatické indexy (klíče) od 0 nebo 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[] = …​
  • 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;

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
    • …​