/**
* 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;
}