[PHP] Array samenvoegen

Pagina: 1
Acties:
  • 52 views sinds 30-01-2008

  • GewoonNico
  • Registratie: April 2003
  • Laatst online: 30-04 18:23
Is het mogelijk om de volgende array

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Array
(
    [home] => Array
        (
            [Bieren] => Bieren
            [Wijnen] => Wijnen
        )

    [Bieren] => Array
        (
            [Limburgse Bieren] => Limburgse Bieren
        )

    [Wijnen] => Array
        (
            [Bordeaux] => Bordeaux
            [Duitsland] => Duitsland
            [Frankrijk] => Frankrijk
            [Italië] => Italië
            [Limburg / Nederland] => Limburg / Nederland
            [Nieuw Zeeland] => Nieuw Zeeland
            [Noord Amerika] => Noord Amerika
            [Oostenrijk] => Oostenrijk
            [Spanje] => Spanje
            [Zuid Amerika] => Zuid Amerika
            [Zuid-Afrika] => Zuid-Afrika
        )

    [Frankrijk] => Array
        (
            [Midden] => Midden
            [Noorden] => Noorden
            [Zuid] => Zuid
        )

)


Samen te voegen tot dit:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Array
(
    [home] => Array
        (
        [Bieren] => Array
            (
                [Limburgse Bieren] => Limburgse Bieren
            )
        [Wijnen] => Array
           (
                [Bordeaux] => Bordeaux
                [Duitsland] => Duitsland
                [Frankrijk] => Array
                    (
                        [Midden] => Midden
                        [Noorden] => Noorden
                        [Zuid] => Zuid
                    )
                [Italië] => Italië
                [Limburg / Nederland] => Limburg / Nederland
                [Nieuw Zeeland] => Nieuw Zeeland
                [Noord Amerika] => Noord Amerika
                [Oostenrijk] => Oostenrijk
                [Spanje] => Spanje
                [Zuid Amerika] => Zuid Amerika
                [Zuid-Afrika] => Zuid-Afrika
               )
        )
)


En indien het mogelijk is, hoe pak ik het dan aan? Ik heb een beetje liggen spelen met array_merge_recursive maar helaas bood deze functie mij geen uitkomst.

  • Jerry
  • Registratie: September 2001
  • Laatst online: 24-03 16:08

Jerry

Who?

Oeps eerst beter lezen :X.

Automatisch is dat niet makkelijk te doen. Of er moet een functie zijn waarbij je op kan geven op welke plaats je de array wilt mergen. En volgens mij kan dat niet met http://nl2.php.net/manual/nl/function.array-merge.php
:?

[edit]
Toch staat er bij: http://nl2.php.net/manual...array-merge-recursive.php
Als de input arrays dezelfde string keys hebben worden de waarden voor deze keys samengevoegd in een array, en dit wordt gedaan op recursieve wijze, zodat als een van de waarden zelf een array is, de functie ook deze zal samenvoegen met de corresponderende waarde in een andere array. Als echter de arrays dezelfde numerieke key hebben zal de latere waarde niet de originele waarde overschrijven, maar worden toegevoegd aan het einde van de array.
Dus het zou toch moeten kunnen.

[edit-2]
Je kan het wel doen met array_merge_recursive, maar dan moeten alle velden die in elkaar geschoven moeten worden arrays zijn.

Voorbeeld:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
$home = array("Bieren" => array(), "Wijnen" => array());
    $bieren = array("Bieren" => array("Limburgse Bieren" => "Limburgse Bieren"));
    $wijnlanden = array("Bordeaux" => "Bordeaux", "Duitsland" => "Duitsland", "Frankrijk" => array());
    $frankrijk = array("Frankrijk" => array("Midden" => "Midden", "Noorden" => "Noorden", "Zuiden" => "Zuiden"));
    
    $wijnlanden = array_merge_recursive($wijnlanden, $frankrijk);

    $wijnen = array("Wijnen" => $wijnlanden);
    
    echo '<pre>';
    print_r($home);
    echo '</pre><br>';
    
    echo '<pre>';
    print_r($bieren);
    echo '</pre><br>';
    
    echo '<pre>';
    print_r($wijnen);
    echo '</pre><br>';
    
    $result = array_merge_recursive($home, $bieren, $wijnen);
    
    echo '<pre>';
    print_r($result);
    echo '</pre><br>';


Het is dat ik niks te doen heb :P.

[ Voor 255% gewijzigd door Jerry op 04-09-2005 12:01 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 15-04 22:07

NMe

Quia Ego Sic Dico.

partypas, je loopt hier intussen lang genoeg rond om te weten dat scriptrequests niet de bedoeling zijn. Ik vind nergens iets van eigen inzet in je post, en je vertelt alleen wat je hebt en waar je naartoe wil. Sowieso is dit ook nog eens eenvoudig zelf op te lossen; als array_merge_recursive niet lukt, dan had je toch best wel even zelf een foreach kunnen schrijven die alle waarden doorloopt en netjes het array aanpast op basis van het al dan niet bestaan van een key?

Op slot dus. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Dit topic is gesloten.