配列(リスト)を一定の数ごとにグルーピングするには (grouped)

関連

Scala

Signature:

PHP

array_chunk関数を使う。

$arr = array('abc', 'def', 'ghi', 'jkl', 'mno', 'pqr', 'stu');
var_export(array_chunk($arr, 2));
// 出力結果
// array (
//   0 =>
//   array (
//     0 => 'abc',
//     1 => 'def',
//   ),
//   1 =>
//   array (
//     0 => 'ghi',
//     1 => 'jkl',
//   ),
//   2 =>
//   array (
//     0 => 'mno',
//     1 => 'pqr',
//   ),
//   3 =>
//   array (
//     0 => 'stu',
//   ),
// )

array_chunk 関数 | PHP Manual
http://php.net/manual/ja/function.array-chunk.php

Ruby

以下のような関数で同様のことができる。

def grouped(src, size)
  dst = []
  index = 0
  len = dst.size
  while index < len do
    group_data = (0 .. (size - 1)).map do |i|
      src[index + i]
    end
    dst.push(group_data)
    index = index + size
  end
  return dst
end

Railsの拡張を使った例

%w(abc def ghi jkl mno pqr).in_groups_of(2).each do |pair|
  p pair
end
# 出力結果
# ['abc', 'def']
# ['ghi', 'jkl']
# ['mno', 'pqr']
このサイトは筆者(hydrocul)の個人メモの集合です。すべてのページは永遠に未完成です。
スポンサーリンク