nortmas
4/26/2017 - 9:26 AM

Partition split

/**
 * Splits array into several parts
 * @param array $array
 * @param $p - number of parts
 * @param bool $reset
 * @return array
 */
function partition($array, $p, $reset = FALSE) {
  $i = $j = 0;
  $new_array = [];
  $num = round(count($array) / $p, 0, PHP_ROUND_HALF_UP);
  foreach ($array as $k => $item) {
    $i++;
    if ($reset) {
      $new_array[$j][] = $item;
    }
    else {
      $new_array[$j][$k] = $item;
    }
    if ($num == $i) {
      $i = 0;
      $j++;
    }
  }
  return $new_array;
}