Často potrebujeme zlúčiť viacero polí dohromady, čo sa dá urobiť veľmi elegantne pomocou funkcie `array_merge`:
$userIdsA = [1, 2, 3];$userIdsB = [5, 6, 7];// vráti [1, 2, 3, 5, 6, 7]$finalIds = array_merge($userIdsA, $userIdsB);
Funkcia array_merge
zlúči dve polia do jedného veľkého poľa. Ak dôjde ku kolízii kľúčov, vyhráva hodnota pravého poľa.
Často však dostávame pole polí, ktoré sa vytvára až v cykle (napríklad z databázy a potom sa prechádza cez foreach), a preto vopred nepoznáme počet zlúčení.
Naivné riešenie by mohlo vyzerať takto:
$finalIds = [];foreach ($users as $user) {$finalIds = array_merge($finalIds, $user->someIds);}
Toto riešenie je však procesorovo veľmi neefektívne, pretože pri každej iterácii musíme polia spojiť a iterovať nad celým veľkým poľom.
Existuje však jednoduché riešenie, pri ktorom upravíme algoritmus zlučovania tak, aby údaje prechádzali iba raz:
$finalIds = [];foreach ($users as $user) {$finalIds[] = $user->someIds;}
V tomto prípade pole $finalIds
vygeneruje o niečo viac údajov, ale stále je to menší problém ako výhoda úspory času.
Samotné zlučovanie sa líši v závislosti od verzie PHP, ktorú používate, a rieši sa elegantným trikom:
/* PHP 5.6 a staršie */$finalIds = call_user_func_array('array_merge', $finalIds + [[]]);/* PHP 5.6+ a novšie */$finalIds = array_merge([], ...$finalIds);/* PHP 7.4+ a novšie pre neprázdne polia */$finalIds = array_merge(...$finalIds);
Najmä riešenie array_merge(...$finalIds)
vyzerá veľmi zaujímavo, pretože využíva novú koncepciu PHP 7, v rámci ktorej môžete funkcii odovzdať dynamický počet argumentov pomocou trojitého znaku na začiatku. Proces zlučovania je potom čo najefektívnejší a celú logiku automaticky spracúva interný systém PHP.
Skrátený zápis array_merge(...$finalIds)
možno použiť len pre neprázdne polia. Ak je to prázdne pole, funkcii nie je odovzdaný žiadny argument a funkcia vyhodí chybu Funkcia array_merge vyvolaná s 0 parametrami, aspoň 1 požadovaný.
.
Jan Barášek Více o autorovi
Autor článku pracuje jako seniorní vývojář a software architekt v Praze. Navrhuje a spravuje velké webové aplikace, které znáte a používáte. Od roku 2009 nabral bohaté zkušenosti, které tímto webem předává dál.
Rád vám pomůžu:
Články píše Jan Barášek © 2009-2024 | Kontakt | Mapa webu
Status | Aktualizováno: ... | sk