PHP - 15. díl – pole proměnných

O polích proměnných jsem psal už v minulých dílech, ale tento díl se polím bude věnovat více do hloubky.

Pole proměnných - úvod

Pole proměnných jsou velmi efektivní a mocná zbraň PHP. Pole v PHP jsou optimalizovaná v několika směrech, takže jsou velmi univerzální.

Pole proměnných je v podstatě proměnná, která má mnoho hodnot, které se liší indexem. Hned na úvod je tu jednoduchý příklad, jak pomocí pole přeložit anglické názvy dní v týdnu do češtiny:

<html>
<head>
<title>Příklad 1. z 15. dílu</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
</head>
<body>
<?
  $den[`Mon`] = `pondělí`;
  $den[`Tue`] = `úterý`;
  $den[`Wed`] = `středa`;
  $den[`Thu`] = `čtvrtek`;
  $den[`Fri`] = `pátek`;
  $den[`Sat`] = `sobota`;
  $den[`Sun`] = `neděle`;

  echo `Dnes je `,$den[date("D")];

?>
</body>
</html>

Pokud si příklad spustíte, zjistíte, že vypíše, jaký je právě den v týdne. Vypíše to česky, a k překladu do češtiny používá pole.

Zjistit, jaký je právě den v týdnu je možné pomocí výrazu date("D"). Funkce date v tomhle případě vrací trojpísmennou zkratku dne v týdnu, ale bohužel v angličtině. Pokud se podíváte do příkladu, tak zjistíte, že v něm je pole $den, které používá jako indexy právě anglické zkratky dní v týdnu. A hodnoty jsou české názvy dní v týdnu. Pak mi pro překlad stačí použít výraz

$den[date("D")]

Výraz date("D") dodá anglickou třípísmennou zkratku dne v měsíci. Ta se použije jako index do pole $den a vyjde z toho český název dne v týdnu.

Další příklad

V dalším příkladu zkusíme přeložit celé datum do českého jazyka:

<html>
<head>
<title>Příklad 2. z 15. dílu</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
</head>
<body>
<?
  $mesic[1] = `leden`;
  $mesic[2] = `únor`;
  $mesic[3] = `březen`;
  $mesic[4] = `duben`;
  $mesic[5] = `květen`;
  $mesic[6] = `červen`;
  $mesic[7] = `červenec`;
  $mesic[8] = `srpen`;
  $mesic[9] = `září`;
  $mesic[10] = `říjen`;
  $mesic[11] = `listopad`;
  $mesic[12] = `prosinec`;

  echo `Dnes je `,date(`j`),`. `,$mesic[date(`n`)],` `,date(`Y`);
?>
</body>
</html>

Pro zobrazení celého data použijeme tři výrazy: date(`j`) vrací číslo dne v měsíci, date(`n`) vrací číslo měsíce (to poté přeložíme na název měsíce) a date(`Y`), který poslouží ke zjištění, jaký rok právě je.

Pro české datum potřebujeme název měsíce v češtině. K tomu si připravíme pole $mesic, které bude mít indexy 1 až 12, hodnotou budou české názvy měsíců.

Jazykový konstrukt array

PHP má speciální jazykový konstrukt array, který slouží pro definování polí. Slouží jako zkratka pro definování polí, je přehlednější a úspornější, než způsob, který je použit třeba v předchozích příkladech. Nejnázornější bude příklad, jak může vypadat první příklad, pokud použijeme konstrukt array:

<html>
<head>
<title>Příklad 3. z 15. dílu</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
</head>
<body>
<?
  $den = array
  (
    `Mon` => `pondělí`,
    `Tue` => `úterý`,
    `Wed` => `středa`,
    `Thu` => `čtvrtek`,
    `Fri` => `pátek`,
    `Sat` => `sobota`,
    `Sun` => `neděle`
  );
 
  echo `Dnes je `,$den[date("D")];
 
?>
</body>
</html>

Příklad je úplně stejný jako první, pouze je pro definici pole použit konstrukt array. Ten umožňuje definovat celé pole naráz pomocí syntaxe index => hodnota, kde všechny prvky pole oddělujeme čárkou. Jak už jsme se přesvědčili dříve, jako indexy je možné použít buď čísla, nebo textové řetězce.

Druhý příklad je zase možné pomocí konstruktu array přepsat takto:

<html>
<head>
<title>Příklad 4. z 15. dílu</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
</head>
<body>
<?
  $mesic = array
  (
    1 => `leden`,
    2 => `únor`,
    3 => `březen`,
    4 => `duben`,
    5 => `květen`,
    6 => `červen`,
    7 => `červenec`,
    8 => `srpen`,
    9 => `září`,
    10 => `říjen`,
    11 => `listopad`,
    12 => `prosinec`
  );
 
  echo `Dnes je `,date(`j`),`. `,$mesic[date(`n`)],` `,date(`Y`);
?>
</body>
</html>

Pokud používáme jako indexy vzestupnou řadu čísel, je možné u konstruktu array vynechat indexy i značku => úplně. Pokud totiž v konstruktu array index chybí, automaticky se dosadí o jedničku více, než největší dosud použité číslo. Proto je poslední možný příklad možné zapsat ještě jednodušeji:

<html>
<head>
<title>Příklad 5. z 15. dílu</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
</head>
<body>
<?
  $mesic = array
  (
    1 => `leden`,
    `únor`,
    `březen`,
    `duben`,
    `květen`,
    `červen`,
    `červenec`,
    `srpen`,
    `září`,
    `říjen`,
    `listopad`,
    `prosinec`
  );
 
  echo `Dnes je `,date(`j`),`. `,$mesic[date(`n`)],` `,date(`Y`);
?>
</body>
</html>

Předdefinovaná pole

PHP používá pole velmi často i k tomu, aby vám předával různé hodnoty, informoval vás o různých stavech, apod.. Velmi důležité jsou různá předdefinovaná pole. S některými z nich jsem vás seznámil už v předchozích dílech seriálu. Jsou to například pole $_SERVER, které slouží pro předávání informací z webového serveru. Pro práci s formuláři slouží pole $_GET a $_POST a mnohé další.

O předdefinovaných polích se zmiňuji hlavně proto, abyste si byli vědomi, že pole je velmi důležitá součást PHP a objevuje se v PHP na každém rohu.

Určitě si přečtěte

Články odjinud