Menu
Coddy logo textTech

'usort' ile Özel Sıralama

Coddy'nin PHP Journey'sinin Mantık ve Akış bölümünün bir parçası. Ders 25 / 68.

PHP'nin yerleşik sıralama işlevleri özel ihtiyaçlarınızı karşılamadığında, usort() işlevi öğelerin tam olarak nasıl karşılaştırılacağını ve sıralanacağını tanımlamanıza olanak tanıyarak en üst düzey esnekliği sunar. Bu işlev, sıralama mantığını belirlemek üzere yazdığınız bir dizi ve özel bir karşılaştırma işlevi alır.

Karşılaştırma işlevi diziden iki öğe alır ve bir tam sayı döndürmelidir: ilk öğe ikinciden önce gelmeliyse negatif bir sayı, eşitlerse sıfır veya ilk öğe ikinciden sonra gelmeliyse pozitif bir sayı.

<?php
function compareByLength($a, $b) {
    return strlen($a) - strlen($b);
}

$words = ["elephant", "cat", "butterfly", "dog"];
usort($words, "compareByLength");
print_r($words);
// Çıktı: Array ( [0] => cat [1] => dog [2] => elephant [3] => butterfly )
?>

Bu örnekte karşılaştırma işlevi, dize uzunlukları arasındaki farkı hesaplar. strlen($a) - strlen($b) negatif bir sayı döndürdüğünde, bu ilk dizenin daha kısa olduğu ve sıralanmış dizide önce gelmesi gerektiği anlamına gelir.

Diğer PHP sıralama işlevleri gibi, usort() özgün diziyi doğrudan değiştirir. Bu güçlü işlev, ister dize uzunluğu, ister özel iş mantığı, ister karmaşık çok alanlı karşılaştırmalar olsun, hayal edebileceğiniz her ölçüte göre sıralama olanaklarını sunar.

challenge icon

Görev

Kolay

Tek bir girdi alacaksınız: JSON biçiminde bir ürün fiyatları dizisi. Girdiyi okuyun, JSON dizesini bir diziye dönüştürün, fiyatları artan sırada sıralayan bir karşılaştırma işlevi oluşturun, diziyi sıralamak için karşılaştırma işlevinizle usort() kullanın ve sıralanmış diziyi print_r() kullanarak yazdırın.

Girdi biçimi: Sayılardan oluşan bir JSON dizisini içeren tek satır (örnek: [29.99,15.50,42.00,8.75,33.25])

Beklenen çıktı: Fiyata göre artan sırada sıralanmış dizinin print_r() kullanılarak görüntülenmesi

Kendin dene

<?php
// Girdiyi oku
$input = fgets(STDIN);
$prices = json_decode($input, true);

// TODO: Bir karşılaştırma fonksiyonu oluştur ve diziyi sıralamak için usort() kullan

// Sıralanmış diziyi yazdır
print_r($prices);
?>
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