PHP'de usort işlevi iki argüman alır: sıralanacak dizi ve geri arama. Geri arama iki argüman da alır: $ a ve $ b. Sonra, bu ikisini istediğimiz şekilde karşılaştırırız. Beni her zaman şaşırtıyor, çünkü usort için bu durum çok yaygın değil. Genellikle değerleri aynı mülke göre sıralar ya da hem $ a hem de $ b için aynı mantığı kullanarak yaparız.PHP'de basit kullanım var mı?
$animals = ['dog', 'tiger', 'giraffe', 'bear'];
usort($animals, function ($a, $b) {
return strlen($a) - strlen($b);
});
çalışacak Yani, ama biz iki kez strlen
söylemek gerekir: Örneğin, uzunluk göre sıralamak istiyorum.
usort($animals, function ($element) {
return strlen($element);
});
Hatta böyle: O bu şekilde söylemek güzel olurdu
usort($animals, 'strlen');
Kendimi (PHP 7 güzellikler kullanarak fonksiyonun bu tür yazdım, ancak kolayca değiştirilebilir PHP 5):
function simple_usort(array &$array, callable $callback): bool
{
return usort($array, function ($a, $b) use ($callback) {
return $callback($a) <=> $callback($b);
});
}
Mükemmel çalışıyor, ancak PHP'de zaten başka bir işlevde bulunmuyor mu? Değilse, neden PHP bu çok popüler ve uygun bir sıralama yöntemini desteklemiyor?
Son bölüm için, php grubunu bize sormak isteyebilirsiniz ... lol – Andrew
Daha önce hiç kullanmamıştım ve buna baktığımda, geri arama fonksiyonu ile biraz kafam karışmış durumda. $ A'nın strlen'i 3'tür ve $ b'nin strlen'i 5'dir. Yani 3-5 -2'dir? $ A ve $ b'yi sıralamak için -2 sayısını nasıl kullanır? Üzgünüm, burada soruları soran sizsiniz, ama ben sadece merak ediyorum. – frosty
@Andrew Haklısınız, ama eminim ki bir şeyleri kaçırmıyorum. Burada "neden" demek "Bir şeyi özlüyorum mu?" –