なんかいいものないのかな?

配列を指定した数に分割する

<?php
function divide2num($sum, $div)
{
    if ($div == 0) {
        $div = 1;
    }
    $v = intval(floor($sum / $div));
    $m = $sum % $div;

    if ($m <= 0) {
        return array_fill(0, $div, $v);
    } else {
        return array_merge(array_fill(0, $m, $v+1), array_fill(0, $div-$m, $v));
    }
}

function divide_array($a, $div)
{
    if (!is_array($a)) {
        $a = array($a);
    }
    $num = divide2num(count($a), $div);

    $offset = 0;
    $result = array();
    foreach ($num as $n) {
        if ($n == 0) {
            break;
        }
        $result[] = array_slice($a, $offset, $n, true);
        $offset += $n;
    }
    return $result;
}
?>

$data = array('1', '2', '3', '4', '5', '6', '7', '8', '9', '10');
$div = 4;

var_dump(divide_array($data, $div));
var_dump(divide_array(array(), $div));


array(4) {
  [0]=>
  array(3) {
    [0]=>
    string(1) "1"
    [1]=>
    string(1) "2"
    [2]=>
    string(1) "3"
  }
  [1]=>
  array(3) {
    [3]=>
    string(1) "4"
    [4]=>
    string(1) "5"
    [5]=>
    string(1) "6"
  }
  [2]=>
  array(2) {
    [6]=>
    string(1) "7"
    [7]=>
    string(1) "8"
  }
  [3]=>
  array(2) {
    [8]=>
    string(1) "9"
    [9]=>
    string(2) "10"
  }
}

array(0) {
}