Menggabungkan array asosiatif
Termasuk bagian Logika dan Alur dalam perjalanan PHP di Coddy. Pelajaran 15 dari 68.
Meskipun array_merge() bekerja dengan lancar pada array berindeks, perilakunya berubah secara signifikan saat digunakan dengan array asosiatif. Perbedaan utamanya terletak pada cara fungsi ini menangani key string duplikat di antara array yang digabungkan.
Saat menggabungkan array asosiatif, jika kedua array memiliki kunci string yang sama, nilai dari array yang disebut belakangan akan menimpa nilai dari array yang disebut lebih dahulu:
<?php
$defaults = ["theme" => "light", "language" => "english", "notifications" => true];
$userSettings = ["theme" => "dark", "notifications" => false];
$finalConfig = array_merge($defaults, $userSettings);
print_r($finalConfig);
// Output: Array ( [theme] => dark [language] => english [notifications] => false )
?>Perhatikan bahwa "theme" berubah dari "light" menjadi "dark" dan "notifications" berubah dari true menjadi false, sedangkan "language" tetap "english" karena tidak ditimpa. Perilaku ini membuat array_merge() sangat cocok untuk sistem konfigurasi yang nilai defaultnya ingin kamu timpa dengan preferensi pengguna.
Urutan argumen penting: nilai dari array yang dicantumkan belakangan dalam pemanggilan fungsi akan lebih diutamakan daripada nilai yang dicantumkan lebih awal. Perilaku penimpaan ini hanya berlaku untuk kunci string; kunci numerik selalu diindeks ulang secara berurutan, sama seperti pada array berindeks.
Tantangan
MudahKamu akan menerima dua input: array konfigurasi default dan array preferensi pengguna, keduanya dalam format JSON. Baca kedua input, ubah setiap string JSON menjadi array asosiatif, gunakan array_merge() untuk menggabungkannya (dengan preferensi pengguna menimpa nilai default), lalu cetak konfigurasi gabungan menggunakan print_r().
Format input: Dua baris, setiap baris berisi object JSON yang merepresentasikan array asosiatif (contoh: {"theme":"light","language":"english"})
Output yang diharapkan: Array konfigurasi gabungan, dengan preferensi pengguna menimpa nilai default, ditampilkan menggunakan print_r()
Coba sendiri
<?php
// Baca kedua input JSON
$defaultConfig = fgets(STDIN);
$userPreferences = fgets(STDIN);
// Ubah string JSON menjadi array asosiatif
$defaultArray = (array)json_decode($defaultConfig, true);
$userArray = (array)json_decode($userPreferences, true);
// TODO: Tulis kodemu di bawah ini untuk merge array tersebut
// Tampilkan konfigurasi yang sudah di-merge
print_r($mergedConfig);
?>Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Fungsi Lanjutan
Fungsi AnonimClosure dan 'use'Fungsi PanahFungsi CallbackMenggunakan 'call_user_func'Fungsi VariabelMengirim dengan ReferensiFungsi RekursifUlasan: Ragam Fungsi4Array Multidimensi
Membuat array 2DMengakses Elemen array 2DMengubah Elemen array 2DMelakukan Perulangan dengan loop Bersarangarray Asosiatif 2DRekap: Latihan Kisi Sederhana2Manipulasi array Lanjutan
Menambahkan dengan 'array_push'Menghapus dengan 'array_pop'Menambahkan dengan 'array_unshift'Menghapus dengan 'array_shift'Menggabungkan array berindeksMenggabungkan array asosiatifMengambil bagian dengan 'array_slice'Nilai dengan 'in_array'Kunci dengan 'array_search'Rekap: Latihan playlist3Mengurutkan array
Urutkan array berindeks secara menaikUrutkan array berindeks secara menurunUrutkan assoc array berdasarkan nilaiUrutkan assoc array berdasarkan kunciPengurutan urutan alamiPengurutan khusus dengan 'usort'Rangkuman: Pengurutan papan peringkatLatihan sendiri: Compiler PHP online