Autor | Zpráva | ||
---|---|---|---|
quatzael Profil |
EDIT: tím číselným key fakticky myslím pořadí v poli.
Jde mi o vložení položky doprostřed pole, za konkrétní hodnotu v poli. $array = ('blue','black','green','white','red'); function insertIntoArray($array,$item,$position){ /* Když zadám: $newarray = insertIntoArray($array,'yellow','green'); má vrátit pole: $newarray = ('blue','black','green','yellow','white','red'); */ } Potřeboval bych, aby to pro jistotu fungovalo i pro asociativní pole. Našel jsem tohle řešení: function insertIntoArray($array, $item, $position) { $begin = array_slice($array, 0, $position); array_push($begin, $item); $end = array_slice($array, $position); $resultArray = array_merge($begin, $end); return $resultArray; } Ale bohužel se tam musí zadat číselná pozice ($position) kam se nová položka vloží a já nevím jak jí zjistit, aby to fungovalo i když ty klíče budou spřeházený, např: $array = (8=>'blue',5=>'black',9=>'green',4=>'white',2=>'red'); Napadlo mě tohle řešení, ale nevím jestli je to úplně správně: function insertIntoArray($array, $item, $position) { if (!is_array($item)) $item = array($item); $numpos = 0; $first_array = array(); $i = 0; $if = true; foreach ($array as $key=>$value) { $i++; if ($value == $position) { $numpos = $i; $if = false; } } $begin = array_slice($array, 0, $numpos); array_push($begin, $item); $end = array_slice($array, $numpos); $resultArray = array_merge($begin, $end); return $resultArray; } Tak ještě oprava: Nemá tam být 3. řádek: if (!is_array($item)) $item = array($item);
|
||
han5vk Profil |
Namiesto toho komplikovaného foreachu by stačilo
$numpos = array_search($position, array_keys($array)) |
||
Časová prodleva: 8 let
|
0