У меня есть интересная проблема. У меня есть многомерный массив, подобный этому:
Array
(
[0] => Array
(
[0] => 4
[1] => 4
[2] => 4
[3] => 4
[4] => 3
[5] => 3
[6] => 3
[7] => 2
)
[1] => Array
(
[0] => 4
[1] => 4
[2] => 3
[3] => 3
[4] => 2
)
)
Я хотел бы иметь возможность использовать array_slice для удаления процента строк из каждого вложенного массива.
Согласно предыдущему сообщению здесь (array_slice в многомерном массиве?), я могу достаточно легко удалить фиксированное количество строк. Но скажем, я хотел удалить 70% каждого вложенного массива, который имеет разное количество строк, я немного застрял.






что-то типа....
<?php
$items = array (
array ( 1, 7, 23, 32, 64, 77 ),
array ( 23, 32, 64, 77 ),
array ( 1, 5, 7, 13, 16, 23, 32, 64, 77 )
);
// (?), remove, or keep
$type = 'remove';
// percentage (%)
$percent = 60;
$format = $type == 'remove' ? ( 100 - $percent ) : $percent;
foreach ( $items AS $array => $values )
{
$max = round ( ( ( count ( $values ) * $format ) / 100 ) );
$items[$array] = array_slice ( $values, 0, $max );
}
print_r ( $items );
?>
Если вы просматриваете каждый вложенный массив как
$sub_array, вы можете установить смещение (второй аргумент) на 70% отcount($sub_array), чтобы сохранить только последние 30%, или установить смещение на 0 и установить предел (третий аргумент) на 30 % того жеcount, чтобы оставить только первые 30% и удалить последние 70%.