Avatar billede weblance Nybegynder
31. oktober 2011 - 11:36 Der er 8 kommentarer og
1 løsning

Smelte arrays sammen til en array

Hej,

Jeg har 2 arrays, som jeg ønsker at smelte sammen til én, f.eks.:

Array 1 indeholder 1, 2, 3, 4, 5
Array 2 indeholder 5, 6, 7, 8, 9

Dem vil jeg have smeltet sammen til én array sådan at linje 1 i array 1 smeltes sammen med linje 1 i array 2, adskilt af et ; så der står:

"1;5", "2;6", "3;7", "4;8", "5;9"

Hvordan gør man det?
Avatar billede michael_stim Ekspert
31. oktober 2011 - 12:01 #1
Avatar billede weblance Nybegynder
31. oktober 2011 - 12:15 #2
Har kigget den igennem men har ikke fundet noget jeg kan bruge :(
Avatar billede michael_stim Ekspert
31. oktober 2011 - 12:31 #3
Den der leder han finder ;o)

Der er flere forskellige måder at lave det på. Prøv at kig det igennem. Kig evt. på array_combine.
Avatar billede iver_mo Nybegynder
31. oktober 2011 - 13:26 #4
Som Michael skriver. Det er array_combine du skal bruge: http://www.php.net/manual/en/function.array-combine.php
Avatar billede olsensweb.dk Ekspert
31. oktober 2011 - 14:10 #5
kan du ikke bare gøre sådan ?
<?php
function array_merge_string(&$ar1, &$ar2){
    $lng = count ($ar1);
    $str="";
    for($i=0; $i<$lng; $i++){
        $str .='"'.$ar1[$i].';'.$ar2[$i].'", ';
    }
    // fjern de 2 bagerste karakterer (komma og mellemrum)
    $str = substr($str,0,-2);
    return $str;    
}
$a = array(1,2,3,4,5);
$b = array(5,6,7,8,9);
echo array_merge_string($a, $b);
?>


med mindre du får en af php's predefinerede functioner til at gøre det
Avatar billede olsensweb.dk Ekspert
02. november 2011 - 12:30 #6
havde lige overset du ville have det samlet i ét array
<?php
function array_merge_array(&$ar1, &$ar2){
    $lng1 = count ($ar1);
    $lng2 = count ($ar2);
    // tager højde for de 2 array ikke nødvendig er lige store
    $lng = ($lng1>=$lng2)? $lng1 : $lng2;   
    for($i=0; $i<$lng; $i++){   
        $ar[]=$ar1[$i].';'.$ar2[$i];
    }   
    return $ar;
}
$a = array(1,2,3,4,5);
$b = array(5,6,7,8,9,0);
print_r(array_merge_array($a, $b));
?>


hvis man skulle have et variabelt antal input parameter kunne det være man skulle lege lidt med dennne http://php.net/manual/en/function.func-get-args.php

er du kommet vidre ??
Avatar billede olsensweb.dk Ekspert
02. november 2011 - 13:06 #7
sådan så lærte jeg sku også noget idag
http://php.net/manual/en/function.func-get-args.php Example #1 func_get_args() example

<?php
function array_merge_array1(){
    $numargs = func_num_args(); 
    $arg_list = func_get_args();   
    // finder længste array
    for ($i = 0; $i < $numargs; $i++) {
        $SizeAr[] = count($arg_list[$i]);
    }
    $lng = max($SizeAr);       
    for($j=0; $j<$lng; $j++){   
        $str="";
        for ($i = 0; $i < $numargs; $i++) {
            $str .= $arg_list[$i][$j].";";
        }   
        $str=substr($str,0,-1);
        $ar[]=$str;
    }   
    return $ar;
}
$a = array(1,2,3,4,5);
$b = array(5,6,7,8,9,0);
$c = array(2,3,4,5,6,7,8);
//print_r(array_merge_array1($a, $b));
print_r(array_merge_array1($a, $b, $c));
?>
Avatar billede weblance Nybegynder
18. december 2011 - 15:00 #8
Hej ronols. Jeg har haft meget travlt, derfor det sene svar. Jeg kunne bruge din løsning, så mange tak for det. Smid venligst et svar til dine point.
Avatar billede olsensweb.dk Ekspert
18. december 2011 - 16:14 #9
godt du kunne bruge det
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