php

PHP'de usort() işlevinin kullanımı

PHP'de usort() işlevinin kullanımı
Dizi değişkenlerini sıralamak için PHP'de birçok yerleşik işlev vardır. usort() işlevi bunlardan biridir. Bu işlev, kullanıcı tanımlı bir geri arama işlevi kullanarak diziyi sıralar. Dizi, diğer sıralama işlevleri kullanılarak standart bir şekilde sıralanamayan belirli bir veri türü içerdiğinde, usort() işlevini kullanmak daha iyidir. Örneğin, dizi veri değerleri içeriyorsa, tür PHP'nin diğer sıralama işlevleri kullanılarak uygun şekilde sıralanamaz. Bu tür bir koleksiyon, usort() işlevinin ikinci argümanında çağrılan uygun kullanıcı tanımlı işlevi tanımlayarak sıralanabilir, usort() işlevinin bu öğreticide gösterilen belirli dizi değerlerini nasıl sıralayabileceği.

Sözdizimi:

usort() fonksiyonunun sözdizimi aşağıda verilmiştir.

Boolean usort(dizi $dizi, geri arama())

Bu işlevin iki argümanı vardır. Her iki argüman da zorunludur. İlk argüman sıralanacak diziyi alır. callback() işlevi, diziyi sıralamak için dizinin değerlerini karşılaştırır ve sayısal bir değer döndürür. callback() işlevinin argümanları eşitse, işlev 0 döndürür. callback() işlevinin ilk argümanı ikinci argümandan büyükse, 1 değerini döndürür. callback() işlevinin ilk argümanı ikinci argümandan küçükse, -1 döndürür. usort() işlevi başarılı sıralama için true, başarısız sıralama için false döndürür. Bu işlevin bazı kullanımları bu öğreticinin sonraki bölümünde gösterilmiştir.

Örnek-1: Bir dizi tarih değeri sıralama

Aşağıdaki örnek, usort() işlevi kullanılarak bir tarih değerleri dizisinin nasıl düzgün şekilde sıralanabileceğini gösterir. Aşağıdaki komut dosyasıyla bir PHP dosyası oluşturun. $tarih_dizisi beş tarih değerleriyle tanımlanır. sıralama_tarihi() işlevi sıralamak için geri arama işlevi olarak bildirildi $tarih_dizisi. usort() işlevi çağrılmadan önce dizi değerleri yazdırılır. usort() işlevi dizi ve geri çağırma işleviyle birlikte çağrıldığında, strtotime() işlevini kullanarak iki tarih değerini zaman damgası değerlerine dönüştürür. İki zaman damgası değeri eşitse, işlev 0 döndürür. İlk zaman damgası değeri ikinci zaman damgası değerinden büyükse, işlev 1 değerini döndürür. İlk zaman damgası değeri ikinci zaman damgası değerinden düşükse, işlev -1 değerini döndürür. usort() işlevi, geri arama işlevini birden çok kez çağırır $tarih_dizisi düzgün sıralanmış. Ardından, sıralanan dizi kullanılarak yazdırılacaktır her biri için döngü.

//geri arama fonksiyonunu tanımla
işlev sıralama_tarihi($a, $b)
dönüş strtotime($a) - strtotime($b);

//Tarih değerleri dizisini bildir
$date_array = dizi('25-03-2020', '14-03-2020', '28-02-2015', '09-12-2017', '20-09-2015');
// Sıralamadan önce dizi değerlerini yazdır
Eko "

Tarih dizisinin değerleri:

";
foreach($date_array as $değer)

yankı $değer."
";

// usort() kullanarak diziyi sıralayın
usort($tarih_dizisi, "sıralama_tarihi");
// Sıralamadan sonra diziyi yazdır
Eko "

Tarih dizisini sıraladıktan sonraki çıktı:

";
foreach($date_array as $değer)

yankı $değer."
";

?>

Çıktı:

Komut dosyasını sunucudan çalıştırdıktan sonra aşağıdaki çıktı görünecektir.

Örnek-2: İlişkili bir diziyi sıralama

Aşağıdaki örnek, usort() işlevi kullanılarak bir ilişkisel dizinin nasıl sıralanabileceğini gösterir. Aşağıdaki komut dosyasıyla bir PHP dosyası oluşturun. sıralama_adları() işlev, diziyi dizi değerlerine göre sıralamak için bir geri çağırma işlevi olarak bildirildi. Üçlü operatör şurada kullanılır: sıralama_adları() ilişkisel dizinin değerlerini karşılaştırma işlevi. İki değer eşitse, geri arama işlevi 0 döndürür. İlk bağımsız değişken değeri ikinci bağımsız değişken değerinden büyükse, geri arama işlevi 1 değerini döndürür. İlk argüman değeri ikinci argüman değerinden küçükse, geri çağırma işlevi -1 değerini döndürür. usort(), geri arama işlevini kullanarak diziyi sıralar ve sıralanan dizi, kullanılarak yazdırılır her biri için döngü.

// İlişkisel diziyi sıralamak için işlevi tanımlayın
fonksiyon sıralama_isimleri($a, $b)
$a döndür == $b ? 0 : $a > $b ? 1: -1;

//İlişkisel diziyi tanımlayın
$persons = array("1001"=>"Meera Ali", "1002"=>"Kabir Hossain", "1003"=>"Nurjahan Akter");
// diziyi sırala
usort($kişi, "sort_names");
//Sıralanan diziyi yazdır
Eko "Sıralanan dizinin değerleri:
";
foreach($kişi olarak $kişi)
yankı $kişi. "
";
?>

Çıktı:

Komut dosyasını sunucudan çalıştırdıktan sonra aşağıdaki çıktı görünecektir.

Örnek-3: İki boyutlu bir diziyi sıralama

Aşağıdaki örnek, usort() işlevi kullanılarak iki boyutlu bir dizinin nasıl sıralanabileceğini gösterir. Aşağıdaki komut dosyasıyla bir PHP dosyası oluşturun. sıralama_dizi() işlev, diziyi dizi değerlerine göre sıralamak için bir geri çağırma işlevi olarak bildirildi. strcmp() işlevi, dizinin değerlerini karşılaştırmak için geri çağırma işlevinde kullanılır. İki değer eşitse, strcmp() işlevi 0 döndürür. İlk bağımsız değişken değeri ikinci bağımsız değişken değerinden büyükse, strcmp() işlevi 1 değerini döndürür. İlk bağımsız değişken değeri ikinci bağımsız değişken değerinden küçükse, strcmp() işlevi -1 değerini döndürür. usort(), geri çağırma işlevini kullanarak diziyi sıralar ve sıralanan dizinin yapısı, print_r() fonksiyon.

//İki boyutlu diziyi sıralamak için işlev tanımlayın
işlev sıralama_dizisi($a, $b)

return strcmp($a['a'], $b['a']);

//İki boyutlu diziyi bildir
$hayvanlar = array(array ("a" => "Aslan"), array ("a" => "Geyik"), dizi ("a" => "Tavşan"),array ("a" => "Maymun" "));
// diziyi sırala
usort($hayvanlar, "sort_array");
//Sıralanan diziyi yazdır
Eko "usort()'tan sonraki dizi değerleri:
";
print_r($hayvanlar);
Eko "
";
?>

Çıktı:

Komut dosyasını sunucudan çalıştırdıktan sonra aşağıdaki çıktı görünecektir.

Sonuç:

usort(), PHP'nin normal sıralama işlevlerini doğru şekilde sıralayamayan belirli veri türlerini sıralamak için kullanışlı bir işlevdir. usort() işlevinin geri çağırma işlevi, sıralamak için gereken değer türlerine göre tanımlanır. Bu öğretici, okuyucuların usort() işlevini nasıl kullanacaklarını bilmelerine ve gereksinime göre komut dosyalarına uygulamalarına yardımcı olacaktır.

Vulkan for Linux Users
With each new generation of graphics cards, we see game developers push the limits of graphical fidelity and come one step closer to photorealism. But...
OpenTTD vs Simutrans
Creating your own transport simulation can be fun, relaxing and extremely enticing. That's why you need to make sure that you try out as many games as...
OpenTTD Tutorial
OpenTTD is one of the most popular business simulation games out there. In this game, you need to create a wonderful transportation business. However,...