Это самый старый вопрос в книге с сотнями доступных ресурсов, но до сих пор каждое решение, которое я пробовал, не решило мою проблему. Я надеюсь, что вы сможете помочь.Сортировка многомерного массива на основе упорядоченного массива
Я пытаюсь отобразить график, отображающий последние 31 день данных. Полученный массив выглядит так:
$data[
0 =>
'day' => 10,
'amount' => 5,
'count' => 2
1 =>
'day' => 16,
'amount' => 4,
'count' => 2
2 =>
'day' => 21,
'amount' => 16,
'count' => 1
3 =>
'day' => 11,
'amount' => 0,
'count' => 0
4 =>
'day' => 12,
'amount' => 0,
'count' => 0
]
По существу этот массив состоит из двух частей. Первые 3 внутренних массива - это дни, которые содержат суммы и подсчеты, остальные 27 - неучтенные в течение нескольких дней с их количеством и количеством, установленным в 0. Так, например, $data[5]
будет днем 13 и $data[21]
день 31. $data[22]
будет равен 1, доходя до 9 дня, таким образом, показывая последние 31 день.
Кроме того, есть упорядоченный массив дней, которые мы хотим вывести.
$days[
0 =>
'day' => 10
1 =>
'day' => 11
2 =>
'day' => 12
...
30 =>
'day' => 9
]
Я пробовал ниже, но в то время как $data
теперь заказал, это по сути просто реплика $days
и теряет другие значения, которые в $data
.
$data = array_uintersect($days, $data, array($this, 'compare_days'));
function compare_days($order, $array) {
return strcmp($order['day'], $array['day']);
}
Что случилось? Как я могу сортировать $data
так, чтобы он сохранял данные и заказывал их по желанию в $days
?
Это хорошо и сорта, как задумано, так что спасибо! Единственная проблема сейчас (и я не упоминал об этом в своем сообщении, так что извиняюсь), запустив 'json_encode ($ data)' возвращает '{" 5 ": {" day ":" 10 "," amount ":" 0 »,« пожертвования »:« 0 »},« 2 »: {« день »:« 11 »...', который вместо этого должен читать '[{" день ":" 10 "...}]'. Я предполагаю, что это потому, что массив теперь «неупорядочен» с точки зрения ключа индекса. Подумайте? –
Извините, вы не можете получить вы можете отправить исходный массив вместе с ожидаемым выходом –
Все в порядке. Я решил это с помощью echo json_encode (array_values ($ graph)), который, к счастью, сбрасывает индексы массивов, которые будут последовательными. Спасибо за помощь! –