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 fonksiyonları özel ihtiyaçlarınızı karşılamadığında, usort() fonksiyonu, elemanların tam olarak nasıl karşılaştırılacağını ve sıralanacağını tanımlamanıza izin vererek en üst düzeyde esneklik sağlar. Bu fonksiyon, dizinizi ve sıralama mantığını belirlemek için yazdığınız özel bir karşılaştırma fonksiyonunu parametre olarak alır.

Karşılaştırma fonksiyonu 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 fonksiyonu 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 ilk sırada yer alması gerektiği anlamına gelir.

Diğer PHP sıralama fonksiyonları gibi, usort() orijinal diziyi doğrudan değiştirir. Bu güçlü fonksiyon, hayal edebileceğiniz her türlü kritere göre sıralama yapma olanakları sunar—ister dize uzunluğu, ister özel iş mantığı veya karmaşık çok alanlı karşılaştırmalar olsun.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

challenge icon

Görev

Kolay

Bir girdi alacaksınız: JSON formatında bir ürün fiyatları dizisi. Girdiyi okuyun, JSON dizesini bir diziye dönüştürün, fiyatları artan düzende sıralayan bir karşılaştırma fonksiyonu oluşturun, diziyi sıralamak için karşılaştırma fonksiyonunuzla birlikte usort() kullanın ve sıralanmış diziyi print_r() kullanarak yazdırın.

Giriş formatı: Sayılardan oluşan bir JSON dizisi içeren tek bir satır (örnek: [29.99,15.50,42.00,8.75,33.25])

Beklenen çıktı: Fiyata göre artan düzende sıralanmış, print_r() kullanılarak görüntülenen dizi

Kopya kağıdı

usort() fonksiyonu, sıralama mantığını tanımlayan bir karşılaştırma fonksiyonu kabul ederek özel sıralama yapılmasına olanak tanır.

Karşılaştırma fonksiyonu iki öğe alır ve şunları döndürmelidir:

  • Negatif sayı: birinci öğe ikinciden önce gelir
  • Sıfır: öğeler eşittir
  • Pozitif sayı: birinci öğe ikinciden sonra gelir
<?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 )
?>

Diğer PHP sıralama fonksiyonları gibi, usort() orijinal diziyi doğrudan değiştirir.

Kendin dene

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

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

// 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