1

ページング、Multi-Dim 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)

ありがとう

4

2 に答える 2

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
于 2012-12-10T13:33:16.347 に答える
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を使用して、必要な数のアイテムを返すページネーションを実行できます。

于 2012-12-10T13:33:07.700 に答える