Pole si můžeme představit jako množinu dat, které vzájemně nějak souvisí. Například abeceda, skupina čísel, názvy ovoce, skupina žáků ve třídě apod. Jedná se o prostředek pro hromadné zpracování dat. Jinak řečeno, pole je místem, do kterého můžeme uskladnit libovolné množství dat. A to do slova.
Vytváření pole
Pole se vytváří za pomoci konstrukce array. Příklad:
<?php
$cisla = array(1,2,3);
// Vytvoření pole, do kterého budou uložena tři čísla: jednička, dvojka a trojka.
var_dump($cisla);
// Vypsání celého pole. Výpis bude vypadat takto: // array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) }
?>
V poli můžeme používat i různé kombinace datových typů, např. místo dvojky můžete vložit text „dvojka“ (vyzkoušejte si to).
Práce se záznamy v poli
Se záznamy v poli se dá různě pracovat.
1. Sečtení počtu záznamů v poli
Pro sečtení celkového počtu záznamů v poli existuje jednoduchá funkce count. Příklad:
<?php
$pole = array(10,20,30,40);
// Vytvoření pole, do kterého budou uložena čtyři čísla
$pocet = count($pole);
// Funkce count zde zjišťuje počet údajů v poli $pole. Protože pole $pole obsahuje čtyři údaje, funkce count vrátí čtyřku. Proměnná $pocet tedy bude obsahovat čtyřku.
echo $pocet;
// Vypíše: 4
?>
Tato funkce se velmi často používá. Příklad – vypsání celkového počtu záznamů v návštěvní knize, celkový počet záznamů ve fotogalerii apod.
2. Hledání v poli
Aby bylo možné se záznamy v poli pracovat, je nutné, aby byl každý záznam nějak identifikovatelný (každý záznam má své pojmenování). To se děje vlastně automaticky a to tak, že každý ze záznamů má podle toho jak byl do pole uložen své pořadí. V PHP tomu říkáme index. Pořadí či index je v PHP (ale i v jiných prog. jazycích) počítáno od nuly. Tedy první záznam má index nula druhý jedna, třetí dva atd... Příklad:
$pole = array(10,20,30,40);
//desítka má index nula, dvacítka má index jedna, třicítka má index dva…
Pro práci s indexi používá PHP hranatých závorek. Např. – [2] (klávesová zkratka pravý Alt+F a G)
Příklad:
<?php
$pole = array(10,20,30,40);
// Vytvoření pole, do kterého budou uložena čtyři čísla
var_dump($pole[1]);
// Vypíše: int(20),
?>
3. Změny záznamů v poli
Velmi jednoduchým způsobem můžeme také jednotlivé záznamy v poli měnit. Příklad:
<?php
$pole = array(1,2,3,4,5);
// Vytvoření pole, ve kterém bude uloženo pět čísel. Jednička má index nula, dvojka má index jedna, trojka má index dva, čtyřka mí index tři a pětka má index čtyři.
var_dump($pole);
// Vypíše celé array(5) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(4) [4]=> int(5) }
echo '<br>';
//další záznamy budou na novém řádku
$pole[3] = 10;
// Změna prvku v poli, který má index tři. Na tomto indexu byla původně čtyřka, teď jsme tam uložili namísto ní desítku. Pole teď vlastně obsahuje čísla: 1,2,3,10,5.
var_dump($pole);
// Vypíše array(5) { [0]=> int(1) [1]=> int(2) [2]=> int(3) [3]=> int(10) [4]=> int(5) }
?>
4. Přidávání nových prvků do pole
Pokud do pole potřebujeme přidat nový záznam, máme k dispozici dva způsoby – přidání nového záznamu automaticky, tedy na konec pole nebo tak, že rovnou napíšeme, jáký index záznamu dáváme. Příklad, kdy vytváříme nový index 2 a do něj vkládáme hodnotu 30:
<?php
$pole = array(1 => 20, 3 => 40, 6 => 70);
// Vytvoření pole, ve kterém budou uložena tři čísla
echo $pole[1];
// Vypíše: 20, protože index 1 má číslo 20
$pole [2] = 30;
// Vytvoření záznamu s indexem 2 a vložení čísla 30 do tohoto indexu
var_dump ($pole);
// Vypíše: 20array(4) { [1]=> int(20) [3]=> int(40) [6]=> int(70) [2]=> int(30) }
?>
Všimněte si, že nový záznam je vypsán až jako poslední i když to neodpovídá číselné posloupnosti.
Druhým způsobem je vkládání nového záznamu bez udání indexu. Stačí vložit jen prázdné hranaté závorky:
<?php
$pole = array(1 => 20, 3 => 40, 6 => 70);
// Vytvoření pole, ve kterém budou uložena tři čísla
echo $pole[1];
// Vypíše: 20, protože index 1 má číslo 20
$pole [] = 30;
// Vytvoření záznamu s indexem 7 a vložení čísla 30 do tohoto indexu
var_dump ($pole);
// Vypíše: 20array(4) { [1]=> int(20) [3]=> int(40) [6]=> int(70) [7]=> int(30) }
?>
V tomto případě se PHP podívá na největší existující index a nově vkládanému přiřadí index o číslo větší. Tedy v tomto případě 7.
5. Ovlivňování indexů
Indexy v poli můžeme i my sami ovlivnit a to zápisem:
index => hodnota
PHP neklade žádná omezení, indexy můžete tvořit i napřeskáčku. Např.:
<?php
$pole = array(7 => 20, 6 => 30);
// Vytvoření pole, ve kterém budou uložena dvě čísla, a to dvacítka a třicítka.
// Index 5 má dvacítka a index 6 má třicítka.
echo $pole[6];
// Vypíše: 30
?>
6. Řetězce jako indexy
Indexy můžeme mít i v podobě textových řetězců. Příklad:
<?php
$pole = array('jednička' => 1, 'dvojka' => 2);
// Vytvoření pole, ve kterém budou uložena dvě čísla, a to jednička a dvojka.
// Index 'jednička' má uloženo číslo 1 a index 'dvojka' má uloženo číslo 2.
echo $pole['jednička'];
// Vypíše: 1
?>
Mezi indexem pro který je použito celé číslo a indexem, pro nějž je použit řetězec není v principu (z hlediska práce s ním) žádný rozdíl.
7. Procházení polí
Pro procházení polí se používá většinou funkce foreach. Existují ještě jiné funkce, ale ty se používají jen velmi zřídka (např. next() a prev()). Funkce (nebo také konstrukce) foreach je vlastně cyklus, který prochází všemi prvky pole a pro každý z nich provede nějakou činnost. Např. jej vypíše. Zjednodušeně to vypadá takto:
foreach (pole as proměnná_pro_každý_prvek_pole)
příkaz_který_se_provede_pro_každý_prvek_pole;
Ve skutečnosti to vypadá následovně:
<?php
$pole = array(1,2,3);
// Vytvoření pole, které obsahuje tři čísla.
foreach ($pole as $hodnota)
echo 'Nalezen prvek s hodnotou: ',$hodnota,'<br>';
// Konstrukce foreach, která prochází pole $pole a hodnotu každého prvku tohoto pole vypíše.
?>
Této konstrukci říkáme procházení bez indexu. Další variantou je procházení s indexem. Ke stávajícímu příkladu vlastně jen přidáme požadavek na výpis indexu:
<?php
$pole = array(1,2,3);
// Vytvoření pole, které obsahuje tři čísla.
foreach ($pole as $index => $hodnota)
echo 'Nalezen prvek s indexem: ',$index,', hodnota: ',$hodnota,'<br>';
// konstrukce foreach, která prochází pole $pole a vypíše jak index daného prvku, tak jeho hodnotu
?>
Pozn.: proměnná $index může mít jakýkoliv název, tedy ne zrovna „index“. To stejné platí pro proměnnou „hodnota“.
Další informace o polích v PHP najdete např. na webu itnetwork.cz.