2017-03-16 93 views
2

我想分頁CakePHP中的數組。該數組從JSON文件中提取,因此不使用任何數據庫查詢或任何其他數據庫查詢。我試圖堅持CakePHP的功能,以確保我不寫無用的代碼。我一直在環顧四周,無法在我的問題上找到任何答案。CakePHP:自定義分組與數組

陣列是爲下列:

array(161) { 
    [0]=> array(8) { 
     ["id"]=> int(589) 
     ["status"]=> string(7) "running" 
     ["threads"]=> int(12) 
     ["create_time"]=> float(1487712882.42) 
     ["memory_usage_precent"]=> float(11.0328674316)    
     ["cpu_usage_precent"]=> int(62) 
     ["cwd"]=> string(1) "/" 
     ["process_name"]=> string(16) "plugin-container" 
    } 
} 

這是陣列中的161行的一行。我如何使用CakePHP的方法對此進行分頁?

+1

Cake's Paginator組件和Paginator Helper是專門爲Paginate模型設計的,它通過操作下面的Query來從Table類加載。它們不能用於分頁數組。您需要手動分頁。 – ahoffner

回答

2

這裏是從Array

步驟1使分頁一個例子 - PHP數據陣列:

$data = [ 
    [ 
    "id"=> 0, 
    "status"=> "running" 
    ],[ 
    "id"=> 1, 
    "status"=> "running" 
    ], 
    #More Arrays ... 
]; 

步驟2 - 準備數據[計算]

$TotalDatas  = count($data); #Total number of Data in Array 
$StartFrom  = 0; #Start from Array index 
$DisplayLimit = 2; #Limit the result per page 
$CurrentPage = isset($_GET['page'])? $_GET['page'] : 0; #Get the page number value from URL 

$StartFrom  = $CurrentPage*$DisplayLimit; #Update the Array index by calculating Page number and Limit 

步驟3 - 使用循環顯示數據:

for($i=$StartFrom; $i<$StartFrom+$DisplayLimit; $i++){ #Increase the Array index by Limit 
    if($i>=$TotalDatas){ 
    continue; #Break Or put some message, Because no more Data in Array 
    } 
    var_dump($data[$i]); 
} 

瀏覽網址等作爲 -localhost?page={PAGE_MUNBER_HERE}

例子:

localhost?page=3 

注:上面的代碼是基本分頁的簡單例子。