2012-12-10 3 views
1

다중 차원 PHP 배열에서 페이징, 정렬?다중 차원 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

지금까지 해보신 것은 무엇입니까? 문제가 어디 있습니까? sorting은 ['usort'] (http://de3.php.net/manual/en/function.usort.php)로 아주 간단해야합니다. – Carsten

답변

3

이 예에서

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

http://php.net/manual/en/function.array-multisort.php에서, 우리는 볼륨 하강, 판 오름차순으로 주문합니다. 행 배열이 있지만 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 
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를 사용하여 항목의 수를 반환하는 페이지 매김을 할 수 있습니다.