| 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: 9 let
|
|||
0