Я пару раз пробовал просить здесь, я тоже видел этот вопрос
который похож на мой, но, к сожалению, он не работает (или я могу заставить его работать также).
У меня такой массив:
Array (
[user_1] => Array
(
[0] => Array
(
[category] => string_var
[time] => unix_timestamp
),
[1] => Array
(
[category] => string_var
[time] => unix_timestamp
),
[2] => Array
(
[category] => string_var
[time] => unix_timestamp
)
),
[user_2] => Array
(
[0] => Array
(
[category] => string_var
[time] => unix_timestamp
),
[1] => Array
(
[category] => string_var
[time] => unix_timestamp
),
[2] => Array
(
[category] => string_var
[time] => unix_timestamp
)
)
)
И для каждого пользователя я должен сортировать массив 2-го уровня по метке времени.
Следовательно, я пробовал:
foreach ($array as $user => $user_data) {
timestamps = array();
foreach($user_data as $key => $actual_data) {
$timestamps[$key] = $actual_data['time'];
}
array_multisort($timestamps, SORT_ASC, $user_data);
}
unset($timestamps);
print_r($array); // the original array should now be sorted by timestamp
Ну, сортировка не происходит, окончательный массив точно = исходный.
ПРИМЕЧАНИЯ:
int(1432587949)
, поэтому он не должен быть проблемой с переменным типомГде я не прав? благодаря
Вы хотите сделать что-то вроде этого:
array_walk($array, function(&$arr) {usort($arr, function($a,$b){return ($a["time"] < $b["time"]) ? -1 : ($a["time"] > $b["time"] ? 1 : 0);});});
Но так как вы сказали, что данные поступают из базы данных, я предлагаю вам сортировать их там, потому что это может быть быстрее, чем сортировка в php.
$arr
- это просто имя внутреннего параметра.