İlişkisel Dizileri Değere Göre Sıralama
Coddy'nin PHP Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 22 / 68.
İlişkisel dizilerle çalışırken, anahtar-değer ilişkilerini koruyarak bunları genellikle değerlerine göre sıralamanız gerekir. PHP bu amaçla iki özel işlev sunar: artan sıralama için asort() ve azalan sıralama için arsort().
asort()'un değerleri artan sırada sıralamak için nasıl çalıştığı aşağıda açıklanmıştır:
<?php
$students = [
"Alice" => 85,
"Bob" => 92,
"Charlie" => 78,
"Diana" => 96
];
asort($students);
print_r($students);
// Çıktı: Array ( [Charlie] => 78 [Alice] => 85 [Bob] => 92 [Diana] => 96 )
?>Notların artık en düşükten en yükseğe doğru sıralandığına, ancak her öğrencinin adının notuyla doğru şekilde eşleşmeye devam ettiğine dikkat edin. Bu, asort() işlevinin normal sort() işlevine göre temel avantajıdır. Anahtarlar ve değerler arasındaki ilişkiyi korur.
Azalan sıralama için arsort() benzer şekilde çalışır, ancak değerleri en yüksekten en düşüğe doğru düzenler:
<?php
arsort($students);
print_r($students);
// Çıktı: Array ( [Diana] => 96 [Bob] => 92 [Alice] => 85 [Charlie] => 78 )
?>Her iki işlev de tıpkı indeksli dizi karşılıkları gibi özgün diziyi doğrudan değiştirir. Bu, anahtar-değer çiftlerini korurken değere göre sıralama yapmanız gereken öğrenci notları, ürün fiyatları veya herhangi bir senaryo gibi verileri düzenlemek için onları mükemmel kılar.
Görev
KolayBir girdi alacaksınız: JSON biçiminde çalışan adları ve maaşlarından oluşan ilişkisel bir dizi. Girdiyi okuyun, JSON dizesini bir diziye dönüştürün, çalışanları maaşlarına göre azalan sırada (en yüksekten en düşüğe) sıralamak için arsort() kullanın ve sıralanmış diziyi print_r() kullanarak yazdırın.
Girdi biçimi: Çalışan adlarının anahtar, maaşların ise değer olduğu bir JSON nesnesini içeren tek satır (örnek: {"John":45000,"Sarah":52000,"Mike":38000,"Lisa":61000})
Beklenen çıktı: Maaş değerlerine göre azalan sırada sıralanmış, print_r() kullanılarak görüntülenen ilişkisel dizi
Kendin dene
<?php
// Girdiyi oku
$input = fgets(STDIN);
// JSON'u ilişkisel diziye dönüştür
$employees = (array)json_decode($input, true);
// TODO: Diziyi maaşa göre azalan sırada sıralamak için kodunuzu aşağıya yazın
// Sıralanmış diziyi yazdır
print_r($employees);
?>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