3 наибольших числа из асс. массива

Статус
В этой теме нельзя размещать новые ответы.

yeaahhh

Старатель
Регистрация
8 Май 2008
Сообщения
278
Реакции
11
Ребят, добрый день. Не подскажете, как вытянуть 3 наибольших значения(числа) из ассоциативного массива?
PHP:
$occc = array("Весёлый" =>"".$oc['funny']."","Гостеприимный" => "".$oc['hospitable']."","Добрый" => "".$oc['good']."","Дружелюбный" =>"".$oc['friendly']."","Жадный" =>"".$oc['greedy']."","Жизнерадостный" =>"".$oc['cheerful']."","Заботливый" =>"".$oc['thoughtful']."","Завистливый" =>"".$oc['envious']."","Застенчивый" =>"".$oc['shy']."","Злой" =>"".$oc['angry']."","Интересный" =>"".$oc['interesting']."","Искренний" =>"".$oc['sincere']."","Красивый" =>"".$oc['beautiful']."","Ленивый" =>"".$oc['lazy']."","Надёжный" =>"".$oc['safe']."","Нудный" =>"".$oc['boring']."","Общительный" =>"".$oc['sociable']."","Остроумный" =>"".$oc['witty']."","Отзывчивый" =>"".$oc['responsive']."");
arsort($occc);
foreach($occc as $key => $val) 
   {
      echo (" $key => $val ");
echo "<br />";
   }
Все переменные из запроса - числовые.. т.е. вот что на выходе:
Отзывчивый => 18
Интересный => 16
Общительный => 15
Остроумный => 14

Иными словами, нужно как-то поставить break.. А как правильно это делается?

Заранее спасибо

---------- Post added at 16:26 ---------- Previous post was at 14:45 ----------

Проблему решил. Спасибо
 
Могу предложить такой способ, создать два массива, в одном хранить ключи, а во втором числа которые соответствуют ключам, через цикл foreach скопировать все данные в эти массивы, далее отсортировать оба, по возрастанию (оба массива), и вывести первые три числа.
 
  • Заблокирован
  • #3
PHP:
$occc = array("Весёлый" =>"".$oc['funny']."","Гостеприимный" => "".$oc['hospitable']."","Добрый" => "".$oc['good']."","Дружелюбный" =>"".$oc['friendly']."","Жадный" =>"".$oc['greedy']."","Жизнерадостный" =>"".$oc['cheerful']."","Заботливый" =>"".$oc['thoughtful']."","Завистливый" =>"".$oc['envious']."","Застенчивый" =>"".$oc['shy']."","Злой" =>"".$oc['angry']."","Интересный" =>"".$oc['interesting']."","Искренний" =>"".$oc['sincere']."","Красивый" =>"".$oc['beautiful']."","Ленивый" =>"".$oc['lazy']."","Надёжный" =>"".$oc['safe']."","Нудный" =>"".$oc['boring']."","Общительный" =>"".$oc['sociable']."","Остроумный" =>"".$oc['witty']."","Отзывчивый" =>"".$oc['responsive']."");
arsort($occc);
$i=0;
foreach($occc as $key => $val){
   if ($i<3){
     echo (" $key => $val ");
     echo "<br />";
   }else{
	   break;
   }
   $i=$i+1;

}
 
PHP:
$sorted = asort($array);
$try  =0; $lagest = array();
while($try<3)
{
  $lagest[]=array_shift($sorted); $try++;
}
 
$sorted = asort($array);
$your_array=array_slice($sorted,0,3,true) - если ключи не надо, 4-й параметр можно опустить
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху