If you're still interested, here's a working function. You might be able to tweak it for even better fidelity. The echos are for testing and would be removed from production code, of course.
function resize_array($old_arr, $new_y)
{
$old_y = count($old_arr);
$old_x = (count($old_arr, COUNT_RECURSIVE) -
$old_y) / $old_y;
$ratio = $new_y / $old_y;
$new_x = ceil($old_x * $ratio);
echo count($old_arr, COUNT_RECURSIVE) -
$old_y . '<br />';
echo $old_y . '<br />';
echo $old_x . '<br />';
echo $ratio . '<br />';
echo $new_y . '<br />';
echo $new_x . '<br />';
echo floor($new_y / $ratio) . '<br />';
echo floor($new_x / $ratio) . '<br />';
for ($i = 0; $i < $new_y; $i++) {
for ($j = 0; $j < $new_x; $j++) {
$new_arr[$i][$j] = $old_arr[floor($i / $ratio)]
[floor($j / $ratio)];
echo $new_arr[$i][$j] . '*' .
$i . '*' . $j . '<br />';
}
}
for ($i = 0; $i < $new_y; $i++) {
for ($j = 0; $j < $new_x; $j++) {
echo $new_arr[$i][$j];
}
echo '<br />';
}
}
And here's a test script:
$old_array = array(array(1,1,0,0,1,1),
array(0,0,1,1,0,0),
array(0,0,1,1,0,0),
array(0,0,0,0,0,0),
array(0,0,1,1,0,0),
array(0,0,1,1,0,0),
array(0,0,1,1,0,0));
$new_height = 25;
$new_array = resize_array($old_array, $new_height);