27. august 2003 - 13:05
Der er
8 kommentarer
Merge af multidimensionelt array
Jeg har to multi-dimensionelle arrays jeg gerne ville merge. Findes der en rutine til dette i PHP. array_merge() virker ikke. Mine arrays ser sådan ud: $array1 = array( 'TEXT' => array('text1'), 'URL' => array('link1') ); $array2 = array( 'TEXT' => array('text2'), 'URL' => array('link2') ); På forhånd tak
Annonceindlæg fra Infor
27. august 2003 - 13:12
#1
array_merge() virker fint, men da du har identiske nøgler vil den sidste overskrive den første.
27. august 2003 - 13:19
#2
Som det ses har jeg identiske nøgler og derfor virker array_merge ikke.
27. august 2003 - 13:30
#3
LOL
27. august 2003 - 13:32
#4
Du kan jo i sagens natur ikke få to identiske nøgler (og tilhørende værdier) med over i et nyt array da nøgler jo skal være unikke! Så bare brug array_merge på: $array1 = array( 'TEXT1' => array('text1'), 'URL1' => array('link1') ); $array2 = array( 'TEXT2' => array('text2'), 'URL2' => array('link2') ); og hvis det ikke er godt nok, må du jo beskrive, hvad du vil!
27. august 2003 - 13:34
#5
Da du har identiske nøgler og det derfor ikke virker må du sørge for at dine nøgler holder op med at være identiske :-)) $arrayTemp = array(); foreach ( $array2 as $key -> $value ) $arrayTemp[ $key ."_1" ] = $value; $resultat = array_merge( $array1, $arrayTemp ); mvh JakobA
27. august 2003 - 13:38
#6
Neb kunne det evt være at det du i virkeligheden ønsker er at lave array_merge på de 2 under-arrays, så du ender med at have een lang link liste og een lang urlliste sor 2 elementer i et array? $resultat[ 'TEXT' ] = array_merge( $array1['TEXT'], $array2['TEXT'] ); $resultat[ 'URL' ] = array_merge( $array1['URL'], $array2['URL'] );
27. august 2003 - 13:58
#7
Men det er stadig noget risikabelt, hvis 2 forskellige tekster fx peger på samme url vil dit URL array blive kortere og så er fanden løs. Så hvad med bare at lave et assocoativt array, hvor tekster peger på urler: $resultat = array() $resultat['tekst1'] = "link1"; $resultat['tekst2'] = "link2"; $resultat['tekst3'] = "link3"; $resultat['tekst4'] = "link4"; //... osv så kan du enten slå op i det array med teksten: echo "<a href='" .$resultat['tekstN'] ."'>tekstN</a><br>" eller scanne hele arrayet med en foreach sætning: foreach ( $resultat as $txt => $url ) { echo "<a href='$url'>$txt</a><br>"; }
28. august 2003 - 19:32
#8
jakoba: Din løsning virker for mig. Opret et svar, hvis du vil ha' nogle point :)
Vi tilbyder markedets bedste kurser inden for webudvikling