İ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şkili dizilerle çalışırken, anahtar-değer ilişkilerini koruyarak onları genellikle değerlerine göre sıralamanız gerekir. PHP bu amaç için iki özel fonksiyon sunar: artan düzen için asort() ve azalan düzen için arsort().
İşte asort() işlevinin değerlere göre artan düzende sıralama yapmak için nasıl çalıştığı:
<?php
$students = [
"Alice" => 85,
"Bob" => 92,
"Charlie" => 78,
"Diana" => 96
];
asort($students);
print_r($students);
// Outputs: 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() fonksiyonunun normal sort() fonksiyonuna 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 fonksiyon da, indeksli dizi karşılıkları gibi, orijinal diziyi doğrudan değiştirir. Bu, onları öğrenci notları, ürün fiyatları gibi verileri düzenlemek veya anahtar-değer çiftlerini bozmadan değere göre sıralama yapmanız gereken her durum için mükemmel 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 çalışan isimleri ve maaşlarından oluşan bir ilişkisel dizi (associative array). Girdiyi okuyun, JSON dizesini bir diziye dönüştürün, çalışanları maaşlarına göre azalan düzende (en yüksekten en düşüğe) sıralamak için arsort() kullanın ve sıralanmış diziyi print_r() kullanarak yazdırın.
Girdi formatı: Anahtar olarak çalışan isimlerini ve değer olarak maaşları içeren bir JSON nesnesi barındıran tek bir satır (örnek: {"John":45000,"Sarah":52000,"Mike":38000,"Lisa":61000})
Beklenen çıktı: Maaş değerlerine göre azalan düzende sıralanmış, print_r() kullanılarak görüntülenen ilişkisel dizi
Kopya kağıdı
İlişkisel dizileri (associative arrays), anahtar-değer ilişkilerini koruyarak değerlere göre artan düzende sıralamak için asort() işlevini kullanın:
<?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 )
?>İlişkisel dizileri değerlere göre azalan düzende sıralamak için arsort() işlevini kullanın:
<?php
arsort($students);
print_r($students);
// Çıktı: Array ( [Diana] => 96 [Bob] => 92 [Alice] => 85 [Charlie] => 78 )
?>Her iki işlev de normal sort() işlevinden farklı olarak, orijinal diziyi doğrudan değiştirir ve anahtarlar ile değerler arasındaki ilişkiyi korur.
Kendin dene
<?php
// Girdiyi oku
$input = fgets(STDIN);
// JSON'u ilişkisel diziye dönüştür
$employees = (array)json_decode($input, true);
// YAPILACAK: Diziyi maaşa göre azalan düzende 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ıralama