Jak v PHP třídit vícerozměrné pole
Odesláno v August 11, 2005 | Kategorie PHP | 3 Comments
Jednoduchá situace:
potřebujete setřídit vícerozměrné pole vrácené třeba z databáze podle zadaného sloupce. Použijeme array_multisort. Definice v manuálu k PHP je poměrně krkolomná, proto se pokusím o vlastní popis a jednoduchý příklad.
$data['0']['name']= 'Google'; $data['1']['name']= 'Internet Goodies Page'; $data['2']['name']= 'Full Web Building Tutorials'; $data['3']['name']= 'World Wide Web Consortium'; foreach ($data as $val) echo '<pre>'; ?>
$data['0']['url'] = 'http://www.google.com';
$data['1']['url'] = 'http://goodies.euweb.cz';
$data['2']['url'] = 'http://www.w3schools.com';
$data['3']['url'] = 'http://www.w3.org';
{
$sortarray[] = $val['name'];
}
array_multisort($sortarray,$data);
print_r($data);
Funkce array_multisort seřadí prvky druhého pole podle prvků v prvním poli. Tedy pokud bude v prvním poli prvek přesunut na druhé místo, bez ohledu na obsah bude prvek ve druhém poli přesunut také na druhé místo.
Funguje to asi takhle: Nejprve si připravíme pole, podle kterého budeme řadit tak, že vybereme pole s daným indexem (name) a to pak použjeme jako ‘řadící’. Má stejnou délku, pouze má jen jeden rozměr. Jako druhé, řazené pole, zneužijeme už existující $data.
Array_multisort má další nepovinné parametry:
- SORT_REGULAR – Compare items normally
- SORT_NUMERIC – Compare items numerically
- SORT_STRING – Compare items as strings
- SORT_ASC – Sort in ascending order
- SORT_DESC – Sort in descending order
A zbytek si nastudujte sami.
Komentáře
3 Responses to “Jak v PHP třídit vícerozměrné pole”
Váš komentář:









To je sice fajn, to si muze najit kazdy na
cz.php.net/array_multisort
ALE, co kdyz chci radit podle vice indexu/klicu?
Mam tabulku Id, Jmeno, Prijmeni, Body a chci to seradit jednou podle prijmeni a jmeno; a podruhe podle body a prijmeni :)
To uz jaksi nepopisujes a prijde mi to dulezitejsi nez tento priklad.
[peter] Zkus to seřadit nejdřív na vybraných datech nejdřív z jednoho a pak z druhého sloupce.
[...] Access Denied: Hezky vysvětlené seřazení vícerozměrného pole (v češtině). [...]