array_multisort

(PHP 4, PHP 5, PHP 7)

array_multisortÇok sayıda diziyi veya çok boyutlu dizileri sıralar

Açıklama

array_multisort ( array &$dizi [, mixed $arg = SORT_ASC [, mixed $arg = SORT_REGULAR [, mixed $... ]]] ) : bool

array_multisort() işlevi çok sayıda diziyi bir kerede sıralayabileceği gibi çok boyutlu bir diziyi bir veya daha fazla boyuta göre de sıralayabilir.

İlişkisel (string) anahtarlar korunursa da sayısal indisler yeniden oluşturulur.

Değiştirgeler

dizi

Sıralanacak dizi.

arg

Belirtildiği takdirde, önceki diziye uygulanmak üzere ya başka bir dizi ya da şu seçeneklerden biri belirtilir: SORT_ASC (artan sırada), SORT_DESC (azalan sırada), SORT_REGULAR (normal), SORT_NUMERIC (sayısal), SORT_STRING (dizgesel).

...

Ek değiştirge'ler.

Dönen Değerler

Başarı durumunda TRUE, başarısızlık durumunda FALSE döner.

Örnekler

Örnek 1 - Çok sayıda diziyi sıralamak

<?php
$ar1 
= array(101001000);
$ar2 = array(1324);
array_multisort($ar1$ar2);

var_dump($ar1);
var_dump($ar2);
?>

Bu örnekte sıralama sonrasında iki dizi arasındaki elemanlar yerlerine göre birbirinin karşıtı olmak üzere ilk dizi 0, 10, 100, 100; ikinci dizi 4, 1, 2, 3 içerir.

array(4) {
  [0]=> int(0)
  [1]=> int(10)
  [2]=> int(100)
  [3]=> int(100)
}
array(4) {
  [0]=> int(4)
  [1]=> int(1)
  [2]=> int(2)
  [3]=> int(3)
}

Örnek 2 - Çok boyutlu diziyi sıralamak

<?php
$ar 
= array(
       array(
"10"11100100"a"),
       array(   
1,  2"2",   3,   1)
      );
array_multisort($ar[0], SORT_ASCSORT_STRING,
                
$ar[1], SORT_NUMERICSORT_DESC);
var_dump($ar);
?>

Bu örnekte sıralama sonrasında, ilk dizi "10", 100, 100, 11, "a" dizisine dönüşecek (artan düzende dizgesel olarak sıralanır), ikinci dizi ise 1, 3, "2", 2, 1 değerlerini içerecektir (azalan düzende sayısal olarak sıralanır) .

array(2) {
  [0]=> array(5) {
    [0]=> string(2) "10"
    [1]=> int(100)
    [2]=> int(100)
    [3]=> int(11)
    [4]=> string(1) "a"
  }
  [1]=> array(5) {
    [0]=> int(1)
    [1]=> int(3)
    [2]=> string(1) "2"
    [3]=> int(2)
    [4]=> int(1)
  }
}

Örnek 3 - Veritabanı sonuçlarının sıralanması

Bu örnek için, veri dizisindeki her eleman tablodaki bir satıra karşılıktır.

Örnek veri:

 bölüm |   baskı
-------+--------
    67 |       2
    86 |       1
    85 |       6
    98 |       2
    86 |       6
    67 |       7

Dizi olarak veri dizisi kullanılmıştır. Aynı sonuç mysql_fetch_assoc() işlevini bir döngü içinde kullanarak da elde edilebilir.

<?php
$veri
[] = array('bölüm' => 67'baskı' => 2);
$veri[] = array('bölüm' => 86'baskı' => 1);
$veri[] = array('bölüm' => 85'baskı' => 6);
$veri[] = array('bölüm' => 98'baskı' => 2);
$veri[] = array('bölüm' => 86'baskı' => 6);
$veri[] = array('bölüm' => 67'baskı' => 7);
?>

Bu örnekte bölüm'ü azalan baskı'yı artan düzende sıralayacağız.

Satırlara karşılık gelen bir dizimiz var, fakat array_multisort() sütun dizileri gerektiriyor. Bu nedenle sıralamayı yapmadan önce sütunları elde etmek için şu kodu kullanacağız:

<?php
// Sütun listelerini elde edelim
foreach ($veri as $anahtar => $satır) {
    
$bölüm[$anahtar]  = $satır['bölüm'];
    
$baskı[$anahtar] = $satır['baskı'];
}

// bölüm'ü azalan, baskı'yı artan düzende sıralayalım ve
// ortak bir anahtara göre sıralamak için $veri'yi son
// değiştirge olarak ekleyelim
array_multisort($bölümSORT_DESC$baskıSORT_ASC$veri);
?>

Veri kümemiz artık sıraya dizildi:

bölüm | baskı
------+------
   98 |     2
   86 |     1
   86 |     6
   85 |     6
   67 |     2
   67 |     7

Örnek 4 - Harf büyüklüğüne duyarsız sıralama

SORT_STRING ve SORT_REGULAR seçenekleri harf büyüklüğüne duyarlı olup, büyük harf ile başlayan dizgeler sıralamada küçük harfle başlayanlardan önce gelir.

Harf büyüklüğüne duyarsız sıralama yapmak için özgün dizinin önce küçük harfli bir kopyası oluşturulur.

<?php
$dizi 
= array('Alpha''atomic''Beta''bank');
$küçük_harfli_dizi array_map('strtolower'$array);

array_multisort($küçük_harfli_diziSORT_ASCSORT_STRING$dizi);

print_r($array);
?>

Yukarıdaki örneğin çıktısı:

Array
(
    [0] => Alpha
    [1] => atomic
    [2] => bank
    [3] => Beta
)

Ayrıca Bakınız