2012-08-10 72 views
0

我需要編寫一個PHP函數來將一個數組分割成多個數組,以將其納入網格佈局。簡單的說,這是我需要實現:分割PHP陣列的網格佈局

源數據數組:

$table = array(
'a','b','c','d', 
'e','f','g','h', 
'i','j','k','l', 
'm','n','o','p', 
'q','r','s','t', 
'u','v','w','x', 
'y','z'); 

我需要創建一個函數,該函數這個數組的輸入,也需要電網的詳細信息輸入(如前所述下面)並分割數組。例如:

grid_split($table, 1, 4); // 1st of 4 grid columns 

應返回:

array('a','e','i','m','q','u','y'); 

,並

grid_split($table, 2, 4); // 2nd of 4 grid columns 

應返回:

array('b','f','j','n','r','v','z'); 

同樣如此,

grid_split($table, 1, 3); // 1st of 3 grid columns 

應返回:

array('a','d','g','j','m','p','s','v','y'); 

回答

3

你可以使用array_slice功能。

function grid_split($arr, $n, $grids) { 
    $limit = count($arr)/$grids; 
    return array_slice($arr, ($n - 1) * $limit, $limit); 
} 

更新:錯過閱讀您的問題,以下是你想要的。

function grid_split($arr, $n, $grids) { 
    $ret = array(); 
    foreach ($arr as $key => $value) { 
    if ($key % $grids === $n - 1) { 
     $ret[] = $value; 
    } 
    } 
    return $ret; 
} 
+0

'grid_split($表,1,4)'返回'陣列([0] => A [ 1] => b [2] => c [3] => d [4] => e [5] => f)'expected is'Array([0] => a [1] => e [2 ] => i [3] => m [4] => q [5] => u [6] => y)' – 2012-08-10 06:52:32

+0

@AkshayRaje檢查我的更新。 – xdazz 2012-08-10 06:54:19

+0

更新正確無誤...謝謝你! – 2012-08-10 06:57:08

0

所有你需要的是一個運行的設施,工廠for循環:

for($i = $n - 1, $count = count($arr); $i < $count; $i += $grids) { 
    $ret[] = $arr[$i]; 
}