Ist es möglich, ein assoziatives Array mit Literalschlüssel => Wertepaaren voranzustellen? Ich weiß, dass array_unshift () mit numerischen Schlüsseln funktioniert, aber ich hoffe auf etwas, das mit Literalschlüsseln funktioniert.
Als Beispiel möchte ich Folgendes tun:
$array1 = array('fruit3'=>'apple', 'fruit4'=>'orange');
$array2 = array('fruit1'=>'cherry', 'fruit2'=>'blueberry');
// prepend magic
$resulting_array = ('fruit1'=>'cherry',
'fruit2'=>'blueberry',
'fruit3'=>'apple',
'fruit4'=>'orange');
php
arrays
associative-array
Colin Brock
quelle
quelle
Die Antwort ist nein. Sie können einem assoziativen Array kein Schlüssel-Wert-Paar voranstellen.
Sie können jedoch mit dem Vereinigungsoperator ein neues Array erstellen, das das neue Schlüssel-Wert-Paar am Anfang des Arrays enthält
+
. Das Ergebnis ist jedoch ein völlig neues Array, und das Erstellen des neuen Arrays ist O (n) komplex.Die Syntax ist unten.
Hinweis: Verwenden Sie nicht array_merge (). array_merge () überschreibt Schlüssel und behält keine numerischen Schlüssel bei.
quelle
In Ihrer Situation möchten Sie array_merge () verwenden:
Verwenden Sie wieder array_merge (), um einem assoziativen Array anstelle von array_unshift () einen einzelnen Wert voranzustellen:
quelle
@Cletus ist genau richtig. Nur um hinzuzufügen, wenn die Reihenfolge der Elemente in den Eingabearrays nicht eindeutig ist und Sie das endgültige Array sortieren müssen, möchten Sie möglicherweise ksort :
quelle
ksort
boolean zurückgegeben, daher muss das oben Gesagte als zwei Anweisungen ausgeführt werden, nicht als eine, z. B.$a = $array1 + $array2; ksort($a);
ist$resulting_array
dies ein boolescher Wert, nicht das Array, das Sie erwartet haben.Mit der gleichen Methode wie @mvpetrovich können Sie die Kurzversion eines Arrays verwenden, um die Syntax zu verkürzen.
Verweise:
PHP: array_merge ()
PHP: Arrays - Handbuch
quelle