İ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şkili dizilerle çalışırken davranışı önemli ölçüde değişir. Temel fark, birleştirilen diziler arasındaki yinelenen dize anahtarlarını nasıl ele aldığıdır.
İlişkisel dizileri birleştirirken, 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);
// Çıktı: Array ( [theme] => dark [language] => english [notifications] => false )
?>"theme" değerinin "light"tan "dark"a, "notifications" değerinin ise true'dan false'a nasıl değiştiğine, "language" değerinin ise üzerine yazılmadığı için nasıl "english" olarak kaldığına dikkat edin. Bu davranış, varsayılan değerlerin kullanıcı tercihleri tarafından üzerine yazılmasını istediğiniz yapılandırma sistemleri için array_merge() fonksiyonunu mükemmel kılar.
Argümanların sırası önemlidir; fonksiyon ç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, tıpkı indeksli dizilerde olduğu gibi her zaman sıralı olarak yeniden indekslenir.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Görev
Kolayİki girdi alacaksınız: her ikisi de JSON formatında olan bir varsayılan yapılandırma dizisi ve bir kullanıcı tercihleri dizisi. Her iki girdiyi de okuyun, her bir JSON dizesini bir ilişkisel diziye (associative array) dönüştürün, bunları birleştirmek için array_merge() kullanın (kullanıcı tercihleri varsayılanların üzerine yazacak şekilde) ve birleştirilmiş yapılandırmayı print_r() kullanarak yazdırın.
Giriş formatı: İki satır - her satır bir ilişkisel 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.
Kopya kağıdı
İlişkisel dizileri array_merge() ile birleştirirken, yinelenen dize anahtarlarının üzerine sonraki dizilerdeki değerler yazılır:
<?php
$defaults = ["theme" => "light", "language" => "english", "notifications" => true];
$userSettings = ["theme" => "dark", "notifications" => false];
$finalConfig = array_merge($defaults, $userSettings);
print_r($finalConfig);
// Çıktı: Array ( [theme] => dark [language] => english [notifications] => false )
?>Temel davranışlar:
- Aynı ada sahip dize anahtarları: sonraki dizi değerleri öncekilerin üzerine yazar
- Sıralama önemlidir: daha sonra listelenen diziler önceliklidir
- Sayısal anahtarlar her zaman ardışık olarak yeniden dizine eklenir
- Varsayılan değerlere ve kullanıcı geçersiz kılmalarına sahip yapılandırma sistemleri için mükemmeldir
Kendin dene
<?php
// İki JSON girişini 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);
// YAPILACAK: Dizileri birleştirmek için kodunuzu aşağıya yazın
// Birleştirilmiş yapılandırmayı çıktı olarak ver
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ıralama