PHP多維陣列排序實現程式碼_PHP教程

來源:互聯網
上載者:User
在php中對數組排序包括一維數組排序與多維陣列排序,下面我來詳細介紹利用php數組排序函數與自定函數來實現資料排序的具體方法。

單數組排序

sort函數升序排序

bool sort ( array &$array [, int $sort_flags= SORT_REGULAR ] )

代碼如下 複製代碼

$fruits = array("lemon", "orange", "banana", "apple");
sort($fruits);
var_dump($fruits);
?>

-rsort降序排列--

代碼如下 複製代碼

$fruits = array("lemon", "orange", "banana", "apple");
rsort($fruits);var_dump($fruits);
?>

比如有個多維陣列:

代碼如下 複製代碼
$arr = array(
'd' => array('id' => 5, 'name' => 1, 'age' => 7),
'b' => array('id' => 2,'name' => 3,'age' => 4),
'a' => array('id' => 8,'name' => 10,'age' => 5),
'c' => array('id' => 1,'name' => 2,'age' => 2)
);

需要對二維數組中的 age 項排序。


需要用到PHP的內建函數 array_multisort(),


array_multisort() 需要一個包含列的數組,因此用以下代碼來取得列,然後排序。

代碼如下 複製代碼
// 取得列的列表
foreach ($data as $key => $row) {
$volume[$key] = $row['volume'];
$edition[$key] = $row['edition'];
}

// 將資料根據 volume 降序排列,根據 edition 升序排列
// 把 $data 作為最後一個參數,以通用鍵排序
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);

資料集合現在排好序了,結果如下:
volume | edition
-------+--------
98 | 2
86 | 1
86 | 6
85 | 6
67 | 2
67 | 7


//自訂函數:

代碼如下 複製代碼
function multi_array_sort($multi_array,$sort_key,$sort=SORT_ASC)
{
if(is_array($multi_array))
{
foreach ($multi_array as $row_array)
{
if(is_array($row_array))
{
$key_array[] = $row_array[$sort_key];
}
else
{
return false;
}
}
}
else
{
return false;
}
array_multisort($key_array,$sort,$multi_array);
return $multi_array;
}


//處理

代碼如下 複製代碼
print_r(multi_array_sort($arr,'age'));
//輸出
Array
(
[c] => Array
(
[id] => 1
[name] => 2
[age] => 2
)

[b] => Array
(
[id] => 2
[name] => 3
[age] => 4
)

[a] => Array
(
[id] => 8
[name] => 10
[age] => 5
)

[d] => Array
(
[id] => 5
[name] => 1
[age] => 7
)

)

實際上真正在排序的時候還有很多方法可以使用,比如php的array數組內建的 arsort(),asort(),ksort(),krsort(),natsort(),natcasesort(),rsort(),usort(),array_multisort() 和 uksort()。


http://www.bkjia.com/PHPjc/445296.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/445296.htmlTechArticle在php中對數組排序包括一維數組排序與多維陣列排序,下面我來詳細介紹利用php數組排序函數與自定函數來實現資料排序的具體方法。 單數...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.