Я пытаюсь рассчитать процентили для пользователей в базе данных. Для этого у меня есть массив $data
, который мне нужно отсортировать.
У меня есть объект запроса, который содержит User_ID
, Total_User_Orders
и Total_Orders
. Вот как выглядит код:
// Loop through the users
foreach($query->result() as $row)
{
(string)$user_id = (string)$row->user_id;
$data[$user_id] = number_format((($row->total_user_orders/$row->total_orders)*100), 5);
}
// Sort the $data array
array_multisort($data);
print_r($data);
Что (я считаю), что следует сделать, это typecast $row->user_id
(int) в виде строки. Тогда индекс $data[$user_id]
должен быть задан как строка - правильно ...?
Когда я сортирую массив, используя array_multisort
, он сортирует его так, как если бы индекс был целым числом, а не строкой . Это означает, что он теряет индекс.
Руководство по PHP для array_multisort()
состояний, "Ассоциативные (строковые) ключи будут сохранены, но числовые ключи будут переиндексированы." . Я также пытался использовать array_multisort($data, SORT_STRING)
, но такой же вывод происходит. Тем не менее - это работает, когда я $data['#'.$user_id]
, но это не совсем похоже на правильное решение для меня!
Кто-нибудь может помочь? Заранее спасибо!