вторник, 4 ноября 2008 г.

Функция разбивки массива


/*
Разбить массив 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 "
";
}

Комментариев нет: