İlişkisel Dizileri Anahtara Göre Sıralama
Coddy'nin PHP Journey'sinin Mantık ve Akış bölümünün bir parçası — ders 23 / 68.
Değerlere göre sıralama yararlı olsa da, bazen ilişkisel dizileri bunun yerine anahtarlarına göre düzenlemeniz gerekir. PHP, artan anahtar sırası için ksort() ve azalan anahtar sırası için krsort() fonksiyonlarını sağlar; her ikisi de kritik anahtar-değer ilişkilerini korur.
İşte ksort() fonksiyonunun bir diziyi anahtarlarına göre alfabetik olarak nasıl sıraladığı:
<?php
$settings = [
"theme" => "dark",
"language" => "english",
"notifications" => "enabled",
"auto_save" => "on"
];
ksort($settings);
print_r($settings);
// Çıktı: Array ( [auto_save] => on [language] => english [notifications] => enabled [theme] => dark )
?>Anahtarların artık A'dan Z'ye alfabetik sıraya dizildiğini, her bir ayar adının ise değeriyle düzgün bir şekilde eşleşmeye devam ettiğini fark edin. Bu, özellikle yapılandırma seçeneklerini veya menü öğelerini öngörülebilir ve düzenli bir şekilde görüntülemek istediğinizde yararlıdır.
Ters alfabetik sıra için, krsort() benzer şekilde çalışır ancak anahtarları Z'den A'ya doğru sıralar. Her iki fonksiyon da, diğer PHP sıralama fonksiyonları gibi orijinal diziyi doğrudan değiştirir; bu da onları, anahtar sırasının değer sırasından daha önemli olduğu verileri düzenlemek için verimli kılar.
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
KolayBir girdi alacaksınız: JSON formatında departman adları ve bütçe tahsislerinden oluşan bir ilişkisel dizi (associative array). Girdiyi okuyun, JSON dizesini bir diziye dönüştürün, departmanları anahtarlarına göre alfabetik olarak artan sırada sıralamak için ksort() kullanın ve sıralanan diziyi print_r() kullanarak yazdırın.
Giriş formatı: Departman adlarını anahtar, bütçe miktarlarını değer olarak içeren bir JSON nesnesi barındıran tek bir satır (örnek: {"Marketing":75000,"IT":120000,"HR":65000,"Finance":95000})
Beklenen çıktı: Departman adlarına (anahtarlara) göre alfabetik olarak artan sırada sıralanmış ve print_r() kullanılarak görüntülenen ilişkisel dizi.
Kopya kağıdı
PHP, anahtar-değer ilişkilerini koruyarak ilişkisel dizileri anahtarlarına göre sıralamak için ksort() ve krsort() fonksiyonlarını sağlar.
ksort() anahtarları artan alfabetik sıraya göre (A'dan Z'ye) sıralar:
ksort($array);krsort() anahtarları azalan alfabetik sıraya göre (Z'den A'ya) sıralar:
krsort($array);Her iki fonksiyon da orijinal diziyi doğrudan değiştirir:
<?php
$settings = [
"theme" => "dark",
"language" => "english",
"notifications" => "enabled",
"auto_save" => "on"
];
ksort($settings);
print_r($settings);
// Çıktı: Array ( [auto_save] => on [language] => english [notifications] => enabled [theme] => dark )
?>Kendin dene
<?php
// Girdiyi oku
$input = fgets(STDIN);
// JSON'u diziye dönüştür
$departments = (array)json_decode($input, true);
// YAPILACAK: Diziyi anahtarlara göre sıralamak için kodunuzu aşağıya yazın
// Sonucu yazdır
print_r($departments);
?>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