Pole v PHP
Klíče
číselné
asociativní // $stat["CR"] = "Praha";
Vícerozměrná pole
$staty = array("CR" => array("hlavni_mesto" => "Praha", "popoulace" => "10 mil."););
Výstup polí
print_r
odešle na výstup obsah jakékoliv proměnné, umí zobrazit obsah pole i objektu do čitelného formátu
nepovinný parametr return (true) vrátí výstup volajícímu, ne na standardní výstup
Jak se vytvoří pole
$stat[0] = "CR"; $stat[1] = "SR"; // funguje i u asociativních polí
$stat[] = "CR"; // pouze číselné vzestupné indexy
array()
list()
v jediné operaci přiřadí do proměnných hodnoty extrahované z nějakého pole
$pole[] = "Matous"; $pole[] = "Havlena": list($jmeno, $prijmeni) = $pole;
Velmi užitečné pro vytahování dat z databáze!!!
range(od, do, po_kolika(nepovinne))
vytvoří posloupnost pole, počínaje hodnotou od do hodnoty do, muze jit i po delsich krocich
Test na pole
is_array()
Přidávání a odstraňování prvků pole
$arrayname[]
viz předtím jak se přímo vytvoří pole
array_push($pole, "a", "b", ...)
přídá proměnné na konec pole $pole
array_pop($pole)
vrátí poslední prvek
array_shift($pole)
vrátí první prvek
array_unshift($pole, "a", "b", ...)
přidává prvky na začátek pole $pole
array_pad($pole, $delka, $vych_hodnota)
zvětší délku pole specifikovanou argumentem delka a naplni ho hodnotou vych_hodnota
pokud délka menší než pole, nic se neprovede
kladna vych_hodnota doplni pole vpravo, zaporna vlevo
Vyhledávání prvků v poli
in_array($jehla, $kupka_sena, strict(nepoviné))
hledá $jehlu jako hodnotu v poli $kupka_sena, vrací true nebo false
strict říká, zda brát v úvahu i typ
array_keys($pole, $hodnota(nepovinný))
vrátí pole všech klíčů, je-li uvedena $hodnota, tak se vrátí pouze ty klíče, které odpovídají dané hodnotě
array_key_exists($klic, $pole)
vrátí true pokud najde v poli daný klíč
array_values($pole)
vrátí všechny hodnoty v poli do pole s číselnými indexy
array_search($jehla, $kupka_sena, strict(1 - nepovinný))
hledá v poli $kupka_sena hodnotu $jehla a vrátí její klíč nebo false
Procházení polí
key($pole)
vrátí klíč umístěný na aktuální pozici ukazatele
reset($pole)
nastaví ukazatel zpět na začátek
each($pole)
vrátí aktuální dvojici klíč/hodnota a posune ukazatel o jednu pozici, pokud se ukazatel před voláním nacházel na konci pole, vrátí FALSE
Vrácené pole se skládá ze 4 klíčů (0 a key, 1 a value)
current($pole)
vrátí hodnotu pole nacházející se na aktuální pozici ukazatele
end($pole)
posune ukazatel na poslední prvek a vrátí jeho pozici
next($pole)
posune ukazatel dopředu a vrátí hodnotu pole
prev($pole)
posune ukazatel zpět dozadu a vrátí hodnotu pole na dané pozici, pokud je ukazatel před voláním na 1. pozici, vrátí false
array_walk(&$pole, "funkce", $userdata(nepovinné))
Předá každý prvek z pole array uživatelsky definované fci funkce.
Pokud chceme upravovat dvojice klíč/hodnota, musíme je předávat ve fci odkazem.
Uživatelsky definovaná fce musí přebírat 2 vstupní parametry. 1. reprezentuje aktuální hodnotu a 2. aktuální klíč. Jestliže uvedem i nepovinný parametr userdata, pak se jeho hodnota předá jako 3. parametr.
Dobré pro desinfekci dat předaných formulářem.
array_reverse($pole, preserve_keys(true - nepovinné))
Obrátí pořadí prvků v poli. Je-li preserve_keys na true, zachovají se původní klíče, jinak každá nová hodnota bude mít klíč hodnoty, která se zde nacházela předtím.
array_flip($pole)
Prohodí klíče a hodnoty.
Zjištění velikosti a jedinečných hodnot pole
count($pole, mode(1 - nepovinný))
Vrátí celkový počet hodnot. Je-li zapnutý nepovinný parametr mode na 1, bude se počítat i rekursivně (tedy i vícerozměrná pole - pozor, i pole typu "a" => array(..) se počítá za prvek).
sizeof()
to samé co count()
array_count_values($pole)
Vrátí pole z asociativních dvojic klíč/hodnota. Každý klíč reprezentuje nějakou hodnotu nalezenou v poli, jemu odpovídající hodnota označuje četnost tohoto klíče (jako hodnota).
array_unique($pole)
Odstraní všechny duplicitní hodnoty v poli. Vrátí pole skládající se pouze z jedinečných hodnot.
Setřídění prvků polí
Všechny algoritmy pracují v souladu s pravidly angličtiny. Pokud chceme svá místní nastavení, musíme nastavit pomocí fce setlocale().
sort($pole, sort_flags(nepovinné))
Uspořádá "na místě" prvky od nejnižší po nejvyšší hodnoty.
sort_flags modifikuje chování fce: SORT_NUMERIC - číselně SORT_REGULAT - podle ASCII SORT_STRING - nejlépe odpovídá lidským představám
Neuchová asociace klíč/hodnota. Pak pomůže asort().
natsort($pole)
uspořádá takto: picture1, picture2, picture10, picture20
natcasesort($pole)
Identická s natsort(), ale nerozlišuje velikost písmen.
rsort($pole, sort_flags(nepovinné))
Jako sort(), ale seřadí prvky opačně.
asort($pole, sort_flags(nepovinné))
Jako sort(), ale zachová asociace klíč/hodnota.
array_multisort($pole1, poradi, typ, $pole2, poradi, typ, ...)
Setřídí několik polí naráz a umí také třídit mnoha způsoby vícerozměrné pole. Vrátí true pokud úspěšná.
Za každým polem mohou následovat přepínače, které určují způsob třídení.
2 druhy přepínačů: pořadí a typ
pořadí: SORT_ASC, SORT_DESC
typ: SORT_REGULAR, SORT_NUMERIC, SORT_STRING
arsort($pole, sort_flags(nepovinné))
Podobně jako asort() udržuje asociace klíč/hodnota. Setřídí však pole v opačném pořadí.
ksort($pole, sort_flags(nepovinné))
Setřídí vstupní pole podle jeho klíčů. Vrátí true v případě úspěchu, jinak false.
krsort($pole, sort_flags(nepovinné))
Jako ksort(), ale v opačném pořadí.
usort(&$pole, "funkce")
Setřídí pole podle uživatelsky definovaného porovnávacího algoritmu zakompovaného do nějaké fce.
Uživatelsky definovaná fce musí přebírat 2 argumenty a musí vrácet záporné (v případě že je 1. argument menší jak 2.), 0 (stejné), nebo kladné číslo.
Kombinace, sloučení, extrakce a porovnání
array_combine($klice, $hodnoty)
Vytvoří nové pole z daných klíčů a hodnot. Obě pole musí být stejně velké a neprázdné.
array_merge($pole1, $pole2, ...)
Sloučí pole dohromady a vrátí jediné pole. Jednotlivá pole se budou připojovat za sebou.
Pokud vstupní pole obsahuje řetězcový klíč, který už ve výsledném poli existuje, přepíše se novou hodnotou. To však neplatí pro číselné klíče, při nich se přídá do pole.
array_merge_recursive($pole1, $pole2, ...)
Stejně jako array_merge(), akorát pokud při slučování existují stejné klíče, sloučí se do jednoho pole a vytvoří se pole vícerozměrné.
array_slice($pole, $offset, $length(nepovinné))
Vrátí část pole počínaje klíčem offset a pozicí offset + length. Obě hodnoty zase mohou být záporné i kladné (intuitivně domyslíme). Pokud není length, skončí posledním prvkem pole.
array_splice($pole, $offset, $length(nepovinné), $replacement(nepovinné))
Odstraní z pole všechny prvky počínaje pozicí odpovídající hodnotě offset a konče pozicí offset + length. Vrátí odstraněné prvky ve formě pole.
Nepovinný parametr replacement udává pole, které nahradí odstraňovaný segment.
array_intersect($pole1, $pole2, ...)
Vrátí průnik polí (bere v potaz hodnoty). Klíče se zachovají.
array_intersect_assoc($pole1, $pole2, ...)
Stejně jako array_intersect(), ale bere v úvahu při porovnávání i klíče.
array_diff($pole1, $pole2, ...)
Vrátí ty hodnoty z $pole1, které nejsou v žádném z ostatních vstupních polí. Opak array_intersect().
array_diff_assoc($pole1, $pole2, ...)
Stejně jako array_diff(), akorát bere v úvahu i klíče.
Ostatní
array_rand($pole, num_entries(nepovinné))
Vrátí jeden nebo více klíčů ze vstupního pole. Neuvede-li se num_entries, vrátí se jeden náhodně vybraný klíč.
shuffle($pole)
Náhodně přeskládá prvky v poli.
array_sum($pole)
Sečte všechny hodnoty pole a vrátí celkový součet. Najdou-li se v poli hodnoty jiného typu než číselného, ignorují se.
array_chunk($pole, $size, preserve_keys(nepovinné))
Rozčlení pole na vícerozměrné pole skládající se z několika menších polí obsahujících size prvků.
Není-li velikost dělitelná beze zbytku, bude poslední pole obsahovat méně než size prvků.
Zapne-li se preserve_keys, zachovají se klíče hodnot.
Pole v PHP
Added: 2009-05-06 04:37:31
From: (Joined 2009-03-19 04:54:33)
756 views |6 downloads
Pole v PHP