06. januar 2010 - 15:21
Der er
6 kommentarer og
1 løsning
Arrangering af data i array
Hej alle,
Dataene ser sådan ud og vil altid være sorteret på samme måde, altså ikke efter ID, men efter hvem der ligger under hvem:
array(
array('id' => 1, 'lvl' => 1, 'caption' => 'Test'),
array('id' => 2, 'lvl' => 2, 'caption' => 'Test2'),
array('id' => 3, 'lvl' => 2, 'caption' => 'Test3'),
array('id' => 4, 'lvl' => 1, 'caption' => 'Test4'),
array('id' => 5, 'lvl' => 2, 'caption' => 'Test5'),
);
Og de skal arrangeres efter lvl, så de ender sådan:
array(
'Test' => array(
'Test2' => 2
'Test3' => 3
),
'Test4' => array(
'Test5' => 5
),
);
Hvordan opnår jeg nemmest det?
På forhånd tak
06. januar 2010 - 16:12
#4
Tja, her er et bud - forudsætter du har data i $ai og ønsker med i $ao - ikke testet:
foreach($ai as $item)
{
if ($item['lvl'] == 1)
{
$cap1 = $item['caption'];
$ao[$cap1] = array();
}
else if ($item['lvl'] == 2 && isset($cap1))
{
$ao[$cap1][$item['caption']] = $item['id'];
}
else
{
// Error
}
}
06. januar 2010 - 16:13
#5
Det er ikke en sortering, det er strukturen af data, der skal ændres. Så usort duer ikke tror jeg.
06. januar 2010 - 16:18
#6
acore har helt ret, og såfremt hans kode virker, er det et okay svar. Jeg kunne dog godt selv have lavet den kode der, jeg havde nok bare håbet på noget mere elegant.
07. januar 2010 - 09:46
#7
Jeg er enig i at det ikke er elegant. Tror dog ikke du lige kan finde en funktion, der kan bruges. Det er for "speciel" en opgave.
Implementeringen kan gøres mere "elegant" hvis du lægger det i en funktion - synes jeg.