Прошу помочь

rafaello

Новичок
Доброго дня!
Вопрос из серии "сделайте за меня". Уже башку поломал, пожалуйста помогите!
Есть массив, в котором ключ - это название, а значение - число повторов:
PHP:
$array = ('картошка' => 5, 'огурец' => 10, 'помидор' => 2, 'баклажан' => 9, 'тыква' => 5, 'репа' => 15);
Необходимо отобрать $kolvo = n; элементов из этого массива по принципу у кого самое большое число повторов. То есть в данном случае, если $kolvo = 3, то должны отобраться репа,огурец и баклажан.
Заранее спасибо!
 

Adelf

Administrator
Команда форума
PHP:
if($kolvo==0) return [];
if($kolvo==1) return ['репа'];
if($kolvo==2) return ['репа','огурец'];
if($kolvo==3) return ['репа','огурец','баклажан'];
if($kolvo==4) return ['репа','огурец','баклажан','тыква'];
if($kolvo==5) return ['репа','огурец','баклажан','тыква','картошка'];
if($kolvo==6) return ['репа','огурец','баклажан','тыква','картошка','помидор'];
 

rafaello

Новичок
Я думаю, что это не очень правильно потому, что я заранее не могу знать общее количество элементов, а также их конкретные названия исходного массива.
Тут надо применить array_slice(); но только условие отбора - у кого самый большой из всех показатель частотности.
 

Adelf

Administrator
Команда форума
Он хочет arsort и array_slice. Через фильтр решение неправильное.
 

rafaello

Новичок
Да здравствует функция arsort(); - самая лучшая функция на всем сайте http://php.net :)
А вот и решение:
PHP:
$array = ('картошка' => 5, 'огурец' => 10, 'помидор' => 2, 'баклажан' => 9, 'тыква' => 5, 'репа' => 15);
arsort($array);
$ddr = array();
foreach ($array as $key => $value){
    $ddr[$key] = $value;}
   $rrd = array_slice($ddr, 0, $kolvo);
Всем спасибо!
 
Сверху