0

配列を複数の配列に分割してグリッド レイアウトに対応させる 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');
4

2 に答える 2

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;
}
于 2012-08-10T06:44:32.330 に答える
0

必要なのはありふれた for ループだけです。

for($i = $n - 1, $count = count($arr); $i < $count; $i += $grids) {
    $ret[] = $arr[$i];
}
于 2012-08-10T07:10:38.547 に答える