2017-02-20 5 views
0

Ich habe mehrere Arrays und ich möchte ein Array nur der Schlüssel erhalten, aber stellen Sie sicher, dass die Schlüssel in der Reihenfolge gehalten werden.Verschmelzen Sie zwei Sätze von Array-Schlüsseln in der Reihenfolge

Das Ergebnis dieses Projekts ist, dass jedes Element in einer CSV in einer Reihe angeordnet wird. Jetzt möchte ich das Label-Array als erste Zeile im Blatt bekommen und danach sollte jede Zeile folgen. Einige Anordnungen von Daten werden ausführlicher haben, beachten Sie Label 3.x

$aArr1 = array (
    'Label 1' => 'Value', 
    'Label 2' => 'Value', 
    'Label 3.1' => 'Value', 
    'Label 4' => 'Value', 
    'Label 5' => 'Value', 
    'Label 6' => 'Value' 
); 

$aArr2 = array (
    'Label 1' => 'Value', 
    'Label 2' => 'Value', 
    'Label 3.1' => 'Value', 
    'Label 3.2' => 'Value', 
    'Label 3.3' => 'Value', 
    'Label 4' => 'Value', 
    'Label 5' => 'Value' 
); 

$aArr3 = array (
    'Label 1' => 'Value', 
    'Label 2' => 'Value', 
    'Label 3.1' => 'Value', 
    'Label 3.2' => 'Value' 
) 

$aDesiredLabelArr = array (
    'Label 1', 
    'Label 2', 
    'Label 3.1', 
    'Label 3.2', 
    'Label 3.3', 
    'Label 4', 
    'Label 5', 
    'Label 6' 
); 

Meine Eingänge sind $aArr1, $aArr2 & $aArr3. Meine gewünschte Ausgabe ist $aDesiredLabelArr. Ich schreibe in PHP.

Danke!

+0

Was ist mit dem Schlüssel 'Label 3'? –

+0

suchen Sie nach einem Array von 'Schlüsseln'' 'Paar'' Schlüssel' und 'Werten' .... Und was ist mit dem Schlüssel' Label3? ' –

+1

@Ayaou ... guter Ort, nicht gemeint, da zu sein :) Aber im Grunde wie und wenn irgendwelche Schlüssel hinzugefügt werden (in einer foreach-Schleife zum Beispiel), sollten sie an der entsprechenden Position in die $ aDesiredLabelArr hinzugefügt werden. – Chris

Antwort

1
$result = array_keys(array_merge($aArr1, $aArr2, $aArr3)); 
sort($result, SORT_REGULAR); 


[ 
    (int) 0 => 'Label 1', 
    (int) 1 => 'Label 2', 
    (int) 2 => 'Label 3.1', 
    (int) 3 => 'Label 3.2', 
    (int) 4 => 'Label 3.3', 
    (int) 5 => 'Label 4', 
    (int) 6 => 'Label 5', 
    (int) 7 => 'Label 6' 
] 
+0

danke für die Antwort, aber Sortierung sortiert das Array standardmäßig alphabetisch oder? Diese Etiketten sind nur zum Beispiel, in Wirklichkeit können diese Werte alles sein. – Chris

+0

Die Standardsortierung ist 'SORT_REGULAR', Sie können diese Flagge wie gewünscht ändern –

+0

danke. Nachdem ich darüber nachgedacht habe, denke ich, dass das Problem hauptsächlich darin besteht, dass mein Code refactoring benötigt und es effizientere Möglichkeiten gibt, dies zu tun. Da dies eine absolut gültige und gute Antwort ist und in den meisten Fällen der richtige Ansatz ist, werde ich es als akzeptiert markieren. – Chris

Verwandte Themen