/*
Разбить массив arr на n частей
Возвращает массив res, содержащий части исходного массива
*/
function array_divide($arr, $n) {
//Проверка входных параметров и подготовка
$res = array();
$cnt = count($arr);
if ( $n < 1 || $cnt < 1) return $res;
$part = intval( $cnt / $n);
$rest = $cnt - $part*$n;
//Определение массива интервалов
$intervals = array(0 => 0);
for ( $i=1; $i<$n; $i++ )
$intervals[$i] = $part*$i;
while ( $rest > 0 ) {
for ( $i=1; $i < count($intervals); $i++ ) {
$intervals[$i]++; $rest--;
}
}
$intervals[] = $cnt;
//Заполнение результирующего массива
for ( $i=0; $i < count($intervals)-1; $i++ )
$res[$i] = array_slice( $arr, $intervals[$i], $intervals[$i+1]-$intervals[$i] );
return $res;
}
Пример использования:
$terms = taxonomy_get_tree(1);
$items = array_divide( $terms, 3);
foreach ( $items as $key => $arr ) {
print "";
foreach ( $arr as $key2 => $value )
print "- " . $value . "
";
print "
";
}
Комментариев нет:
Отправить комментарий