Привет! Долго думал как сформулировать заголовок, ничего лучше не придумал, не пинайте сильно. Вопрос в следующем, у меня есть массив с результатами конкурса. Выглядит так: PHP: $arr = array( array('team' => 'Солнышки', 'balls' => 8), array('team' => 'Зайчики', 'balls' => 5), array('team' => 'Пираты', 'balls' => 3) ); Мне нужно создать новый массив, в который бы добавились места, занятые в конкурсе в зависимости от количества балов (максимальное кол-во баллов - 1 место, поменьше - 2, еще меньше - 3 и так далее, чтобы получить вот такой новый массив: PHP: $new_arr = array( array('team' => 'Солнышки', 'balls' => 8,'mesto' => 1), array('team' => 'Зайчики', 'balls' => 5,'mesto' => 2), array('team' => 'Пираты', 'balls' => 3,'mesto' => 3) ); Заранее благодарю!
Как вариант. Cортировка PHP: usort($arr, function ($a, $b) { if ($a['balls'] === $b['balls']) { return 0; } return ($a['balls'] < $b['balls']) ? 1 : -1; }); Затем в цикле заполнение массива PHP: array_walk($arr, function (&$value, $key) { $value['mesto'] = $key+1; });
В таком случае. PHP: foreach ($arr as $key => $value){ if($key && $value['balls'] === $arr[$key-1]['balls']){ $arr[$key]['mesto'] = $arr[$key-1]['mesto']; }else{ $arr[$key]['mesto'] = $key+1; } } Пример скопирован из первого примера документации поменяв местами 1 : -1;.