php排序二維數組
⑴ php 根據某個欄位對二維數組這個數組排序
試編寫代碼如下:
<?php
$array[] = array('id'=>1,'price'=>50);
$array[] = array('id'=>2,'price'=>70);
$array[] = array('id'=>3,'price'=>30);
$array[] = array('id'=>4,'price'=>20);
foreach ($array as $key=>$value){
$id[$key] = $value['id'];
$price[$key] = $value['price'];
}
array_multisort($price,SORT_NUMERIC,SORT_DESC,$id,SORT_STRING,SORT_ASC,$array);
echo '<pre>';
print_r($array);
echo '</pre>';
?>
運行結果:
Array
(
[0] => Array
(
[id] => 2
[price] => 70
)
[1] => Array
(
[id] => 1
[price] => 50
)
[2] => Array
(
[id] => 3
[price] => 30
)
[3] => Array
(
[id] => 4
[price] => 20
)
)
⑵ php二維數組排序方法
PHP二維數組排序可以通過多種方法實現,常見的包括冒泡排序、插入排序、選擇排序以及內置的數組函數如array_multisort等。此外,也可以通過使用usort等用戶自定義的排序函數對關聯數組的鍵或值進行排序。
解釋如下:
冒泡排序:這是一種簡單的排序演算法,通過不斷地比較和交換相鄰元素來將最大值或最小值移動到序列的一端。對於二維數組,可以根據某一列的值進行冒泡排序。但這種方法在處理大規模數據時效率較低。
插入排序:插入排序會將數組元素逐一插入到已排序的序列中,適用於數據量不大的情況。同樣地,它可以用於二維數組的單列排序。
選擇排序:選擇排序每次從未排序的元素中找出最小的元素,存放到已排序序列的末尾。這種方法也比較適合對二維數組的特定列進行排序。
array_multisort函數:這是PHP內置的一個函數,可以對一個或多個數組進行排序。如果應用在二維數組的排序上,可以依據數組中的特定值來排序二維數組的元素。這是一個效率較高的方法,尤其是處理復雜數據時。
使用usort函數:對於關聯數組的排序,可以使用自定義的比較函數usort。通過定義比較規則,可以對數組的鍵或值進行排序。這種方法靈活性較高,適用於復雜數據的處理。但需要編寫相應的比較邏輯,稍微復雜一些。
在PHP中進行二維數組排序時,需要根據具體需求和數據的特性選擇合適的方法。對於大規模數據和高性能要求的情況,通常會傾向於使用內置的array_multisort函數或其他優化過的演算法。而對於小規模數據或特定需求的排序,其他方法也可以滿足需求。
⑶ php 二維數組的排序問題
對二維數組排序,得用到array_multisort()
下面是從php手冊摘出來的例子.具體請根據你的問題查閱手冊.
=========
數據全都存放在名為 data 的數組中。這通常是通過循環從資料庫取得的結果,例如 mysql_fetch_assoc()。
<?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);
?>
本例中將把 volume 降序排列,把 edition 升序排列。
現在有了包含有行的數組,但是 array_multisort() 需要一個包含列的數組,因此用以下代碼來取得列,然後排序。
<?php
// 取得列的列表
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