Apakah mungkin untuk menambahkan array asosiatif dengan pasangan nilai kunci => literal? Saya tahu bahwa array_unshift () bekerja dengan tombol numerik, tapi saya berharap sesuatu yang akan bekerja dengan kunci literal.
Sebagai contoh, saya ingin melakukan hal berikut:
$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
sumber
sumber
Jawabannya adalah tidak. Anda tidak dapat menambahkan array asosiatif dengan pasangan nilai kunci.
Namun Anda bisa membuat larik baru yang berisi pasangan nilai kunci baru di awal larik dengan operator gabungan
+
. Hasilnya adalah array yang sama sekali baru dan membuat array baru memiliki kompleksitas O (n).Sintaksnya ada di bawah.
Catatan: Jangan gunakan array_merge (). array_merge () menimpa kunci dan tidak menyimpan kunci numerik.
sumber
Dalam situasi Anda, Anda ingin menggunakan array_merge ():
Untuk menambahkan satu nilai, untuk array asosiatif, alih-alih array_unshift (), gunakan lagi array_merge ():
sumber
@Cletus tepat. Sebagai tambahan, jika urutan elemen dalam larik masukan ambigu, dan Anda memerlukan larik terakhir untuk disortir, Anda mungkin ingin melakukan ksort :
sumber
ksort
mengembalikan boolean, jadi hal di atas perlu dilakukan sebagai dua pernyataan, bukan satu, misalnya$a = $array1 + $array2; ksort($a);
, jika tidak,$resulting_array
akan menjadi nilai boolean bukan array yang Anda harapkan.Menggunakan metode yang sama seperti @mvpetrovich, Anda dapat menggunakan versi singkatan dari sebuah array untuk mempersingkat sintaks.
Referensi:
PHP: array_merge ()
PHP: Array - Manual
sumber