从多维PHP阵列进行分页,排序?
Array
(
[0] => Array
(
'name' => 'A'
'Date' => 12-10-1990
'Grade' => '20D'
'Level' => 'A10'
)
[1] => Array
(
'name' => 'C'
'Date' => 10-10-1990
'Grade' => '10C'
'Level' => 'C10'
)
[2] => Array
(
'name' => 'B'
'Date' => 12-11-1995
'Grade' => '13E'
'Level' => 'A8'
)
)
有人知道怎么回事(分页,排序)?示例显示在html表中:
Name (asc/desc) | Date (asc/desc)| Grade (asc/desc)| Level(asc/desc)
由于
答案 0 :(得分:3)
来自http://php.net/manual/en/function.array-multisort.php
<?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);
?>
在这个例子中,我们将按卷递减,版本升序。 我们有一个行数组,但是array_multisort()需要一个列数组,所以我们使用下面的代码来获取列,然后执行排序。
<?php
// Obtain a list of columns
foreach ($data as $key => $row) {
$volume[$key] = $row['volume'];
$edition[$key] = $row['edition'];
}
// Sort the data with volume descending, edition ascending
// Add $data as the last parameter, to sort by the common key
array_multisort($volume, SORT_DESC, $edition, SORT_ASC, $data);
?>
The dataset is now sorted, and will look like this:
volume | edition
-------+--------
98 | 2
86 | 1
86 | 6
85 | 6
67 | 2
67 | 7
答案 1 :(得分:2)
您可以使用usort函数对数组进行排序。
想象一下,你想按'名字'排序:
$sortedArray=usort($array,'cmpname');
function cmpname($arr1,$arr2){
$nameA=$arr1['name'];
$nameB=$arr2['name'];
if ($nameA == $nameB) {
return 0;
}
return ($nameA > $nameB) ? +1 : -1;
}
然后你可以使用函数array_slice返回所需数量的项目。