MareX WeBlog

PHP výuka - pole

REKLAMA

Dnes si budeme povídat o polích a naučíme se je vytvářet a používat.

Pole je v podstatě proměnná, do které ale můžete uložit více samostatných hodnot. Tedy pole je vlastně proměnná, ve které jsou další „podproměnné“, ve kterých jsou teprve uložena nějaká data. Jednotlivé části pole se nazývají indexy (klíče). Názvy indexů jsou definovány v hranatých závorkách hned za názvem samotného pole. Nejlépe, když si to ukážeme:

$pole[0] = 10;
$pole[1] = "Nějaký text";
$pole[2] = 5.5;

Nyní jsme vytvořili pole s názvem $pole, které obsahuje 3 hodnoty a to:
index 0 obsahuje hodnotu 10 (tedy celé číslo)
index 1 obsahuje text Nějaký text (tedy textový řetězec)
index 2 obsahuje hodnotu 5.5 (tedy číslo s plovoucí desetinnou čárkou)

Jak sami vidíte, stejně jako u klasických proměnných nezáleží na tom, jakého datového typu je hodnota, kterou jste do pole uložili a v jednom poli to můžete libovolně kombinovat.

Pokud budete definovat pole předchozím způsobem, nemusí být samozřejmě jednotlivé indexy číslovány za sebou. Můžete je definovat na přeskáčku, nebo klidně i nějaké číslo indexu vynechat. Takže třeba takto:

$pole[5] = 10;
$pole[10] = "Nějaký text";
$pole[23] = 5.5;

Je to naprosto to samé, jen jednotlivé hodnoty jsou uloženy pod jinými indexy.

Pole se dá ovšem definovat i jinými způsoby. Jednou z dalších možností je direktiva Array:

$pole = Array(5 => 10, 10 => "Nějaký text", 23 => 5.5);

Teď jsme nadefinovali naprosto stejné pole se stejnými indexy a hodnotami jako v ukázce předtím. V závorce za Array uvedete jednotlivé indexy s jejich hodnotou oddělené čárkami.
Array(index => hodnota, index2 => hodnota2)

Další možnost:

$pole[] = 10;
$pole[] = "Nějaký text";
$pole[] = 5.5;

Tahle ukázka je zase úplně totožná s úplně první ukázkou. Protože jsme nezadali názvy indexů, PHP je dosadí samo.

První index je vždycky 0, pokud necháte indexy pojmenovat takto automaticky.

Stejného výsledku dosáhneme také tímto:

$pole = Array(10, "Nějaký text", 5.5);

Pokud chcete nechat pojmenování indexů na PHP, ale nechcete z nějakého důvodu, aby první index byl 0, stačí předchozí ukázky pozměnit takto:
1.)

$pole[8] = 10;
$pole[] = "Nějaký text";
$pole[] = 5.5;

2.)

$pole = Array(8 => 10, "Nějaký text", 5.5);

V obou příkladech začne číslování indexů od čísla 8. Začíná na tom čísle, které jste zadali jako název prvního indexu, ostatní už zadávat nemusíte.
Takže index 8 = 10, index 9 = „Nějaký text“ a index 10 = 5.5.

Asociativní pole

Asociativní pole je stejné jako běžné pole s tím rozdílem, že indexem nemusí být pouze číslo, ale jakýkoliv řetězec. To je samozřejmě výhoda v tom, že si budete spíš pamatovat, ve kterém indexu je co uloženo. Protože je ale index řetězec, musí být v uvozovkách (případně apostrofech) jako každý běžný řetězec.
Ukázka:

$autor["jmeno"] = "Marek";
$autor["prijmeni"] = "Štafl";
$autor["vek"] = 28;

Nyní jsme nadefinovali pole $autor, které obsahuje indexy jmeno, prijmenivek.
Můžeme ho nadefinovat samozřejmě i takto:

$autor = Array("jmeno" => "Marek", "prijmeni" => "Štafl", "vek" => 28);

Vícerozměrná pole

Další věcí, která se může hodit, jsou vícerozměrná pole. Je to pole, jehož obsahem je další pole. Využívat budete asi pouze dvourozměrná pole. Takové dvourozměrné pole si představte jako tabulku.
Nakreslíme si to:

 jmenoprijmenivek
autor1MarekŠtafl28
autor2BřéťaNovák32

Nyní bychom si tuto tabulku mohli nadefinovat třeba takto:

$autori["autor1"]["jmeno"] = "Marek";
$autori["autor1"]["prijmeni"] = "Štafl";
$autori["autor1"]["vek"] = 28;
$autori["autor2"]["jmeno"] = "Břéťa";
$autori["autor2"]["prijmeni"] = "Novák";
$autori["autor2"]["vek"] = 32;

V poli $autori je teď uložena celá naše tabulka. Toto pole obsahuje dva indexy (autor1autor2), které představují řádek a každý tento index obsahuje další tři indexy (jmeno, prijmenivek), které představují jednotlivé sloupce tabulky. Toto by šlo samozřejmě obrátit, tak že by indexy představovali jednotlivé sloupce tabulky a jejich podindexy by byly řádky.

Vypisování polí

Pokud chcete vypsat obsah pole na obrazovku, nemůžete použít tento zápis, jak jsme tomu byli zvyklí u proměnných:

echo $pole;

Toto nám vypíše jediné slovíčko „Array„, které nás pouze poinformuje o tom, že se jedná o pole, ale s jeho obsahem to nemá nic společného. Chcete-li vypsat obsah nějakého prvku pole, musíte vypisovat pomocí jednotlivých indexů:

echo $pole[0];

V případě vícerozměrných polí i podindexů samozřejmě:

echo $autori["autor1"]["jmeno"];

Na procházení jednotlivých prvků polí slouží různé funkce, ale povídání o nich není součástí tohoto článku. Pro zajímavost si ukážeme jen jednu a to funkci print_r(), která vypíše celý obsah pole.
Výpis úplně první ukázky v tomto článku, tedy zápis:

print_r($pole);

by vypadal nějak takto:

Array
(
  [0] => 10
  [1] => Nějaký text
  [2] => 5.5
)

Výpis ukázky s tabulkou:

print_r($autori);

by vypadal takto:

Array
(
  [autor1] => Array
    (
      [jmeno] => Marek
      [prijmeni] => Štafl
      [vek] => 28
    )

  [autor2] => Array
    (
      [jmeno] => Břéťa
      [prijmeni] => Novák
      [vek] => 32
    )

)

To by bylo z povídání o polích vše.

REKLAMA

PHP výuka - pole