Czy można poprzedzić tablicę asocjacyjną parami literału klucz => wartość? Wiem, że array_unshift () działa z klawiszami numerycznymi, ale mam nadzieję na coś, co będzie działać z kluczami dosłownymi.
Jako przykład chciałbym wykonać następujące czynności:
$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
źródło
źródło
Odpowiedź brzmi nie. Nie można poprzedzić tablicy asocjacyjnej parą klucz-wartość.
Można jednak utworzyć nową tablicę zawierającą nową parę klucz-wartość na początku tablicy za pomocą operatora unii
+
. Rezultatem jest jednak zupełnie nowa tablica, a tworzenie nowej tablicy ma złożoność O (n).Składnia jest poniżej.
Uwaga: nie używaj funkcji array_merge (). array_merge () nadpisuje klucze i nie zachowuje kluczy numerycznych.
źródło
W swojej sytuacji chcesz użyć array_merge ():
Aby dodać pojedynczą wartość dla tablicy asocjacyjnej, zamiast array_unshift (), ponownie użyj array_merge ():
źródło
@Cletus jest na miejscu. Wystarczy dodać, że jeśli kolejność elementów w tablicach wejściowych jest niejednoznaczna i chcesz posortować ostateczną tablicę, możesz spróbować ksortować :
źródło
ksort
zwraca wartość logiczną, więc powyższe należy wykonać jako dwie instrukcje, a nie jedną, np. W$a = $array1 + $array2; ksort($a);
przeciwnym razie$resulting_array
będzie wartością logiczną, a nie tablicą, której się spodziewałeś.Używając tej samej metody, co @mvpetrovich, możesz użyć skróconej wersji tablicy, aby skrócić składnię.
Bibliografia:
PHP: array_merge ()
PHP: Arrays - Manual
źródło