(PHP 4, PHP 5)
usort — Bir diziyi kullanıcı tanımlı bir işlev kullanarak değerlerine göre sıralar
Bu işlev kullanıcı tarafından sağlanmış bir karşılaştırma işlevini kullanarak diziyi değerlerine göre sıralar. Sıralamak istediğiniz diziyi mevcut kuralların dışında bir kurala göre sıralamak isterseniz bu işlev çok işe yarar.
Bilginize:
Karşılaştırma sırasında birbirinin eşi iki üye bulunursa aralarındaki sıralamanın nasıl olacağı belirsizdir.
Bilginize: Bu işlev dizi elemanlarına yeni anahtarlar atar. Anahtarları yeniden düzenlemek yerine evvelce atanmış anahtarları silecektir.
dizi
Sıralanacak dizi.
karş_işlevi
Karşılaştırma için geriçağırım işlevi.
karş_işlevi
dizi değerlerinin aktarılacağı iki
değiştirge kabul etmelidir. Birinci değiştirgenin ikinciden büyük,
küçük veya ona eşit olduğu durumlarda sırayla sıfırdan büyük, sıfırdan
küçük bir değer veya sıfır döndürmelidir.
Başarı durumunda TRUE
, başarısızlık durumunda FALSE
döner.
Sürüm: | Açıklama |
---|---|
4.1.0 |
Yeni sıralama algoritması devreye girdi.
karş_işlevi karşılaştırıldıklarında eşit olan
elemanların özgün sırasını korumuyor.
|
Örnek 1 - usort() örneği
<?php
function cmp($a, $b)
{
if ($a == $b) {
return 0;
}
return ($a < $b) ? -1 : 1;
}
$a = array(3, 2, 5, 6, 1);
usort($a, "cmp");
foreach ($a as $anahtar => $değer) {
echo "$anahtar: $değer\n";
}
?>
Yukarıdaki örneğin çıktısı:
0: 1 1: 2 2: 3 3: 5 4: 6
Bilginize:
Açıkçası, bu örnek için sort() işlevi daha uygun olurdu.
Örnek 2 - usort() ve çok boyutlu dizi
<?php
function karşılaştır($a, $b)
{
return strcmp($a["meyva"], $b["meyva"]);
}
$meyvalar[0]["meyva"] = "mandalina";
$meyvalar[1]["meyva"] = "limon";
$meyvalar[2]["meyva"] = "portakal";
usort($meyvalar, "karşılaştır");
while (list($anah, $değer) = each($meyvalar)) {
echo "\$meyvalar[$anah]: " . $değer["meyva"] . "\n";
}
?>
Bir çok boyutlu dizi sıralanırken $a ve $b dizinin ilk indisine gönderimleri içerir.
Yukarıdaki örneğin çıktısı:
$meyvalar[0]: limon $meyvalar[1]: mandalina $meyvalar[2]: portakal
Örnek 3 - Bir nesnenin üye yöntemini kullanan usort() örneği
<?php
class Deneme {
var $isim;
function Deneme($isim)
{
$this->isim = $isim;
}
/* Duruk karşılaştırma işlevi: */
static function nesne_karşılaştır($a, $b)
{
$al = strtolower($a->isim);
$bl = strtolower($b->isim);
if ($al == $bl) {
return 0;
}
return ($al > $bl) ? +1 : -1;
}
}
$a[] = new Deneme("c");
$a[] = new Deneme("b");
$a[] = new Deneme("d");
usort($a, array("Deneme", "nesne_karşılaştır"));
foreach ($a as $öğe) {
echo $öğe->isim . "\n";
}
?>
Yukarıdaki örneğin çıktısı:
b c d