Avatar billede nosjns Nybegynder
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
Avatar billede tipsen Nybegynder
27. august 2003 - 13:12 #1
array_merge() virker fint, men da du har identiske nøgler vil den sidste overskrive den første.
Avatar billede nosjns Nybegynder
27. august 2003 - 13:19 #2
Som det ses har jeg identiske nøgler og derfor virker array_merge ikke.
Avatar billede tipsen Nybegynder
27. august 2003 - 13:30 #3
LOL
Avatar billede tipsen Nybegynder
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!
Avatar billede jakoba Nybegynder
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
Avatar billede jakoba Nybegynder
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'] );
Avatar billede jakoba Nybegynder
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>";
}
Avatar billede nosjns Nybegynder
28. august 2003 - 19:32 #8
jakoba: Din løsning virker for mig. Opret et svar, hvis du vil ha' nogle point :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester