У меня есть следующий массив игроков и их очки. Я хочу разбить их на две равные команды, где сумма баллов должна быть равна, где это возможно.Сплит PHP-массив на два равных набора, где сумма значений равна
Например, вывод должен быть:
команды а = игрок идентификаторы 505, 481, 510, общее количество очков составляет 6
команды б = игрок идентификаторы 504, 509, 513, общее количество очков составляет 6
Пожалуйста, можете ли вы помочь мне в правильном направлении указать, как это сделать?
Спасибо
Array
(
[0] => Array
(
[match_id] => 664
[0] => 664
[player_id] => 505
[1] => 505
[Points] => 4
[2] => 4
)
[1] => Array
(
[match_id] => 664
[0] => 664
[player_id] => 481
[1] => 481
[Points] => 1
[2] => 1
)
[2] => Array
(
[match_id] => 664
[0] => 664
[player_id] => 510
[1] => 510
[Points] => 1
[2] => 1
)
[3] => Array
(
[match_id] => 664
[0] => 664
[player_id] => 504
[1] => 504
[Points] => 1
[2] => 1
)
[4] => Array
(
[match_id] => 664
[0] => 664
[player_id] => 509
[1] => 509
[Points] => 4
[2] => 4
)
[5] => Array
(
[match_id] => 664
[0] => 664
[player_id] => 513
[1] => 513
[Points] => 1
[2] => 1
)
)
Начните с использования 'mysqli_fetch_assoc()' вместо 'mysqli_fetch_array()', и тогда вы, по крайней мере, получите данные только один раз в качестве массива-адресата и не ассоциированный и числовой массив – RiggsFolly
Число игроков должно быть равным также? Вы можете попытаться отсортировать массив по точкам и добавить один за другим игрока из одного с наивысшими точками до самого низкого. usort может помочь вам в этом. [usort - manual] (http://php.net/manual/en/function.usort.php) 'function sortByPoints ($ a, $ b) { return strcmp ($ a-> Points, $ b- > Точка); } usort ($ array, 'sortByPoints'); ' –
Как вы извлекаете данные? Если вы запрашиваете набор или базу данных, я думаю, что ваш первый шаг должен состоять в том, чтобы улучшить запрос, чтобы получить более работоспособный результат. Большинство интерфейсов позволят вам запросить игрока и суммировать баллы. Это означает, что вы можете легко создать связь. массив с идентификатором игрока и всего. Тогда простая сортировка поместит всех тех, у кого сходные оценки ближе всего. – Luke