İlişkisel Dizileri Birleştirme
Coddy'nin PHP Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 15 / 68.
array_merge() indeksli dizilerle sorunsuz bir şekilde çalışırken, ilişkisel dizilerle çalışıldığında davranışı önemli ölçüde değişir. Temel fark, birleştirilen dizilerdeki yinelenen dize anahtarlarını nasıl ele aldığıdır.
Birleştirilen ilişkisel dizilerde, her iki dizi de aynı dize anahtarını içeriyorsa, sonraki dizideki değer önceki dizideki değerin üzerine yazılır:
<?php
$defaults = ["theme" => "light", "language" => "english", "notifications" => true];
$userSettings = ["theme" => "dark", "notifications" => false];
$finalConfig = array_merge($defaults, $userSettings);
print_r($finalConfig);
// Outputs: Array ( [theme] => dark [language] => english [notifications] => false )
?>"theme" değerinin "light" değerinden "dark" değerine, "notifications" değerinin true değerinden false değerine nasıl değiştiğine, "language" değerinin ise üzerine yazılmadığı için "english" olarak kaldığına dikkat edin. Bu davranış, varsayılan değerlerin kullanıcı tercihleri tarafından geçersiz kılınmasını istediğiniz yapılandırma sistemleri için array_merge() işlevini mükemmel kılar.
Bağımsız değişkenlerin sırası önemlidir: işlev çağrısında daha sonra listelenen dizilerdeki değerler, daha önce listelenenlere göre öncelik kazanır. Bu üzerine yazma davranışı yalnızca dize anahtarları için geçerlidir; sayısal anahtarlar, indeksli dizilerde olduğu gibi her zaman sıralı olarak yeniden indekslenir.
Görev
Kolayİki girdi alacaksınız: her ikisi de JSON biçiminde olan bir varsayılan yapılandırma dizisi ve bir kullanıcı tercihleri dizisi. Her iki girdiyi okuyun, her JSON dizesini ilişkisel bir diziye dönüştürün, bunları birleştirmek için array_merge() kullanın (kullanıcı tercihleri varsayılanların üzerine yazsın) ve birleştirilmiş yapılandırmayı print_r() kullanarak yazdırın.
Girdi biçimi: İki satır — her satır, ilişkisel bir diziyi temsil eden bir JSON nesnesi içerir (örnek: {"theme":"light","language":"english"})
Beklenen çıktı: Kullanıcı tercihlerinin varsayılan değerlerin üzerine yazdığı, print_r() kullanılarak görüntülenen birleştirilmiş yapılandırma dizisi
Kendin dene
<?php
// İki JSON girdisini oku
$defaultConfig = fgets(STDIN);
$userPreferences = fgets(STDIN);
// JSON dizelerini ilişkisel dizilere dönüştür
$defaultArray = (array)json_decode($defaultConfig, true);
$userArray = (array)json_decode($userPreferences, true);
// TODO: Dizileri birleştirmek için kodunuzu aşağıya yazın
// Birleştirilmiş yapılandırmayı çıktıla
print_r($mergedConfig);
?>Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık ve Akış bölümündeki tüm dersler
1İleri Seviye Fonksiyonlar
Anonim FonksiyonlarClosure'lar ve 'use'Ok Fonksiyonları (Arrow Functions)Geri Çağırma (Callback) Fonksiyonları'call_user_func' KullanımıDeğişken FonksiyonlarReferans ile Değer AktarımıÖz Yinelemeli (Recursive) FonksiyonlarÖzet: Fonksiyon Karması4Çok Boyutlu Diziler
2 Boyutlu Dizi Oluşturma2 Boyutlu Dizi Elemanlarına Erişme2 Boyutlu Dizi Elemanlarını Değiştirmeİç İçe Döngülerle Yineleme2 Boyutlu İlişkisel DizilerÖzet: Basit Izgara Egzersizi2İleri Düzey Dizi İşlemleri
'array_push' ile Ekleme'array_pop' ile Silme'array_unshift' ile Ekleme'array_shift' ile Silmeİndisli Dizileri Birleştirmeİlişkisel Dizileri Birleştirme'array_slice' ile Kesit Alma'in_array' ile Değer Kontrolü'array_search' ile Anahtar AramaÖzet: Çalma Listesi Alıştırması3Dizileri Sıralama
İndisli Dizileri Artan Sırada Sıralamaİndisli Dizileri Azalan Sırada Sıralamaİlişkisel Dizileri Değere Göre Sıralamaİlişkisel Dizileri Anahtara Göre SıralamaDoğal Sıralama (Natural Order)'usort' ile Özel SıralamaÖzet: Liderlik Tablosu SıralamaKendi başına pratik yap: Online PHP derleyicisi