Menu
Coddy logo textTech

İ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.

challenge icon

Görev

Kolay

Bir 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);
?>
quiz iconKendini test et

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

Kendi başına pratik yap: Online PHP derleyicisi