程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php array_multisort() 多組數組排序方法

php array_multisort() 多組數組排序方法

編輯:關於PHP編程

在php中array_multisort()可實現一次對多個數組進行排序,或者根據某一維或多維對多維數組進行排序,如果成功則返回 TRUE,失敗則返回 FALSE。

bool array_multisort ( array ar1 [, mixed arg [, mixed ... [, array ...]]] )

如果成功則返回 TRUE,失敗則返回 FALSE。

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

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


例子 1. 對多維數組排序

 代碼如下 復制代碼

<?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);
?>

In this example, after sorting, the first array will transform to "10", 100, 100, 11, "a" (it was sorted as strings in ascending order). The second will contain 1, 3, "2", 2, 1 (sorted as numbers, in descending order).

 代碼如下 復制代碼

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

本例中經過排序後,第一個數組將包含 10,100,100,"a"(作為字符串上升排序),第二個數組將包含 1,3,"2",1(作為數值下降排序)。

例子 2. Sorting multi-dimensional array

 代碼如下 復制代碼

<?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);
?> 

本例中在排序後,第一個數組將變成 "10",100,100,11,"a"(被當作字符串以升序排列)。第二個數組將包含 1, 3, "2", 2, 1(被當作數字以降序排列)。

 代碼如下 復制代碼 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)
  }
}
 

 

實例3 綜合實現來看一個關於在應用中常用的實例.

 代碼如下 復制代碼
header('Content-Type: text/html; charset=utf-8');
echo '<pre>';
//原始數組格式
$array = array(
'key1' => array(
'item1' => '65',
'item2' => '35',
'item3' => '84',
),
'key2' => array(
'item1' => '24',
),
'key3' => array(
'item1' => '38',
'item3' => '45',
),
);
//要排序的鍵
//按照數組中的 item1進行排序
//你也可以換成item2
$sort = 'item1';
foreach($array as $k => $v)
{
$newArr[$k] = $v[$sort];
}
//這個函數如果執行正確他會直接改變原數組鍵值的順序
//如果執行失敗,那麼他會返回 bool(false)
array_multisort($newArr,SORT_DESC, $array);
var_dump($array);
//---------------------排序後的數組打印效果 開始--------------------
array(3) {
["key1"]=>
array(3) {
["item1"]=>
string(2) "65"
["item2"]=>
string(2) "35"
["item3"]=>
string(2) "84"
}
["key3"]=>
array(2) {
["item1"]=>
string(2) "38"
["item3"]=>
string(2) "45"
}
["key2"]=>
array(1) {
["item1"]=>
string(2) "24"
}
}
//---------------------排序後的數組打印效果 結束---------------------

關於 array_multisort()函數詳解可參考 http://www.bKjia.c0m/phper/php-function/39192.htm

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved