Как я могу отсортировать этот массив по значению ключа "порядок"? Хотя значения в настоящее время являются последовательными, они не всегда будут.
Array
(
[0] => Array
(
[hashtag] => a7e87329b5eab8578f4f1098a152d6f4
[title] => Flower
[order] => 3
)
[1] => Array
(
[hashtag] => b24ce0cd392a5b0b8dedc66c25213594
[title] => Free
[order] => 2
)
[2] => Array
(
[hashtag] => e7d31fc0602fb2ede144d18cdffd816b
[title] => Ready
[order] => 1
)
)
Ответы:
Попробуйте usort. Если вы все еще используете PHP 5.2 или более раннюю версию , вам сначала нужно определить функцию сортировки:
Начиная с PHP 5.3, вы можете использовать анонимную функцию:
И, наконец, с PHP 7 вы можете использовать оператор космического корабля :
Чтобы распространить это на многомерную сортировку, обратитесь к второму / третьему элементам сортировки, если первый равен нулю - лучше всего объяснено ниже. Вы также можете использовать это для сортировки подэлементов.
Если вам нужно сохранить ассоциации ключей, используйте
uasort()
- см. Сравнение функций сортировки массивов в руководстве.источник
uasort()
если вы хотите сохранить ключи массива.источник
Я использую эту функцию:
источник
array_multisort
и, следовательно, не требует предварительного распределения$sort_col
, экономя время и память ,&$arr
вместо просто$arr
?Я обычно использую usort и передаю свою собственную функцию сравнения. В этом случае это очень просто:
В PHP 7 используется оператор космического корабля:
источник
$a['order']
3 и$b['order']
6, я вернусь -3. Правильный?Один из подходов к достижению этого был бы следующим
Результат:
источник
Для сортировки массива по значению ключа title используйте:
зЬгстр сравнивает строки.
uasort () поддерживает ключи массива так, как они были определены.
источник
Это касается как прописных, так и строчных букв.
источник
Использовать
array_multisort()
,array_map()
DEMO
источник
array_multisort
ссылается на это первый параметр.Наиболее гибкий подход будет использовать этот метод
вот почему:
Вы можете сортировать по любому ключу (также вложенный как
'key1.key2.key3'
или['k1', 'k2', 'k3']
)Работает как на ассоциативных, так и на неассоциативных массивах (
$assoc
флаг)Он не использует ссылку - возвращает новый отсортированный массив
В вашем случае это будет так просто:
Этот метод является частью этой библиотеки .
источник
Посмотрим правде в глаза: php НЕ имеет простой встроенной функции для правильной обработки каждого сценария сортировки массива.
Эта процедура интуитивно понятна, что означает более быструю отладку и обслуживание:
источник
global
является огромным красным флагом и, как правило, не рекомендуется . Почемуmysql_fetch_array
демонстрируется этот вопрос вместо исходного массива OP, и что нет объяснения того, что делает ваш код и каков будет результат? В целом, это очень сложный подход к достижению желаемого конечного результата.global
see: 3v4l.org/FEeFC Это создает явно определенную переменную, а не переменную, доступ к которой можно изменить и получить к ней глобальный доступ.Вы также можете отсортировать многомерный массив для нескольких значений, таких как
с
Вывод с использованием
print_r($arr)
:PS) использование strcmp было бы хорошим вариантом для сравнения строк.
источник