PHP二維數組排序 array_multisort


array_multisort — 對多個數組或多維數組進行排序

array_multisort() 可以用來一次對多個數組進行排序,或者根據某一維或多維對多維數組進行排序。

關聯(string)鍵名保持不變,但數字鍵名會被重新索引

返回值

成功時返回 TRUE, 或者在失敗時返回 FALSE

參數

array1

要排序的 array

array1_sort_order

之前 array 參數要排列的順序。 SORT_ASC 按照上升順序排序, SORT_DESC 按照下降順序排序。

此參數可以和 array1_sort_flags 互換,也可以完全刪除,默認是 SORT_ASC 。

array1_sort_flags

為 array 參數設定選項:

排序類型標志:

  • SORT_REGULAR - 將項目按照通常方法比較(不修改類型)
  • SORT_NUMERIC - 按照數字大小比較
  • SORT_STRING - 按照字符串比較
  • SORT_LOCALE_STRING - 根據當前的本地化設置,按照字符串比較。 它會使用 locale 信息,可以通過 setlocale() 修改此信息。
  • SORT_NATURAL - 以字符串的"自然排序",類似 natsort()
  • SORT_FLAG_CASE - 可以組合 (按位或 OR) SORT_STRING 或者 SORT_NATURAL 大小寫不敏感的方式排序字符串。

參數可以和 array1_sort_order 交換或者省略,默認情況下是 SORT_REGULAR

 

Example #1 多個數組排序

<?php
$ar1 = array(10, 100, 100, 0);
$ar2 = array(1, 3, 2, 4);
array_multisort($ar1, $ar2);

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

結果:
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)
}

Example #2 排序多維數組

<?php
$ar = array(
       array("10", 11, 100, 100, "a"),
       array(   1,  2, "2",   3,   1)
      );
array_multisort($ar[0], SORT_ASC, SORT_STRING,
                $ar[1], SORT_NUMERIC, SORT_DESC);
var_dump($ar);
?>

結果:

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)
  }
}

Example #3 對數據庫結果進行排序

<?php
$data[] = array('volume' => 67, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 1);
$data[] = array('volume' => 85, 'edition' => 6);
$data[] = array('volume' => 98, 'edition' => 2);
$data[] = array('volume' => 86, 'edition' => 6);
$data[] = array('volume' => 67, 'edition' => 7);
?>

<?php
// 將數據根據 volume 降序排列,根據 edition 升序排列
// 把 $data 作為最后一個參數,以通用鍵排序
array_multisort(array_column($data,'volume'), SORT_DESC, array_column($data,'edition'), SORT_ASC, $data);
?>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM