Bagaimana saya bisa menggabungkan dua array (satu dengan string => nilai pasangan dan lainnya dengan int => pasangan nilai) sambil menjaga string / kunci int? Tak satu pun dari mereka akan tumpang tindih (karena satu hanya memiliki string dan yang lainnya hanya memiliki bilangan bulat).
Ini kode saya saat ini (yang tidak berfungsi, karena array_merge mengindeks ulang array dengan kunci integer):
// get all id vars by combining the static and dynamic
$staticIdentifications = array(
Users::userID => "USERID",
Users::username => "USERNAME"
);
// get the dynamic vars, formatted: varID => varName
$companyVarIdentifications = CompanyVars::getIdentificationVarsFriendly($_SESSION['companyID']);
// merge the static and dynamic vars (*** BUT KEEP THE INT INDICES ***)
$idVars = array_merge($staticIdentifications, $companyVarIdentifications);
php
arrays
array-merge
Garrett
sumber
sumber
array( 123 => "VALUE123" )
kearray( 0 => "VALUE123" )
assert(array(0=>0,1=>1) === array_merge(array('9'=>0), array('9'=>1)))
Jawaban:
Anda cukup 'menambah' array:
sumber
print_r([2 => 56] + [2 => 30]);
menghasilkanArray ( [2] => 56 )
. Jadi, itu menjaga sisi kiri seperti yang ditentukan. Ini adalah sebagai PHP 7.1.19, berjalan pada repl.it .Mengingat yang Anda miliki
Melakukan
$merge = $replacement + $replaced;
kehendak output:Array pertama dari jumlah akan memiliki nilai dalam output akhir.
Melakukan
$merge = $replaced + $replacement;
kehendak output:sumber
$allValues += $newValues;
.$merge = $replacement + $replaced;
akan menampilkan:Array ( [4] => value2 [6] => value3 [1] => value1 )
Meskipun pertanyaan ini cukup lama, saya hanya ingin menambahkan kemungkinan melakukan penggabungan sambil menyimpan kunci.
Selain itu menambahkan kunci / nilai ke array yang ada menggunakan
+
tanda Anda bisa melakukanarray_replace
.Hasilnya adalah:
Kunci yang sama akan ditimpa oleh array yang terakhir.
Ada juga
array_replace_recursive
yang melakukan ini untuk subarrays juga.Contoh langsung di 3v4l.org
sumber
Dua array dapat dengan mudah ditambahkan atau bergabung tanpa mengubah indeks aslinya dengan operator + . Ini akan sangat membantu penuh dalam dropdown pilih laravel dan codeigniter.
Output akan menjadi:
sumber
Coba fungsi array_replace_recursive atau array_replace
http://php.net/manual/en/function.array-replace-recursive.php
sumber