Можно ли в PHP отсортировать ассоциативный массив в ручную?
Массив:
$arr = [ 'foo' => 'foo val', 'bar' => 'bar val', 'baz' => 'baz val', ]; |
$arr = [ 'foo' => 'foo val', 'bar' => 'bar val', 'baz' => 'baz val', ];
Как отсортировать его в ручную, в нужном только мне порядке?
$arr_mod = [ 'bar' => 'bar val', 'foo' => 'foo val', 'baz' => 'baz val', ]; |
$arr_mod = [ 'bar' => 'bar val', 'foo' => 'foo val', 'baz' => 'baz val', ];
Дополнительно:
А какой ваш порядок?)))
Вариант А. foo - строго на нулевом месте, bar - на первом, baz - на втором, остальные элементы - после (перед).
Вариант Б. foo всегда выше чем bar и baz, bar выше чем baz, остальные элементы - можно вставлять в любое место.
PS: А если серьезно, то есть функция usort, с помощью нее вы сами устанавливаете отношение между любыми двумя взятыми элементами.
Надо уточнить условие. Эти ключи в начале строк будут отдельными словами? Могут ли ключи быть началами других ключей, например могут ли быть ключи ba и baz одновременно. И, если так, то куда должна пойти строка baz?
Именно для этого существует usort - чтобы отсортировать массив по значениям используя пользовательскую функцию. Если хотите сортировать не по значениям - есть uksort.
А как именно вы отсортировать хотите, я не очень понял. Но общий код такой:
$array = [3, 2, 5, 6, 1]; usort($array, function ($a, $b) { if ($a == $b) { return 0; } return ($a < $b) ? -1 : 1; //Или ваша любая функция сравнения значений. }); |
$array = [3, 2, 5, 6, 1]; usort($array, function ($a, $b) { if ($a == $b) { return 0; } return ($a < $b) ? -1 : 1; //Или ваша любая функция сравнения значений. });
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Да, в PHP можно отсортировать ассоциативный массив вручную. В отличие от обычного массива, где элементы упорядочены по числовым индексам, в ассоциативном массиве элементы упорядочены по ключам. Сортировка ассоциативного массива может быть полезной, если вам нужно отсортировать его по значениям ключей или по значениям элементов.
Для сортировки ассоциативного массива вручную в PHP можно воспользоваться функцией uasort(). Эта функция позволяет задать пользовательскую функцию сравнения, которая будет определять порядок элементов в массиве. Функция сравнения должна принимать два аргумента — два элемента массива, которые нужно сравнить, и возвращать число, указывающее на их относительное положение.
Пример сортировки ассоциативного массива по значениям ключей:
```php
$myArray = array(
'b' => 3,
'a' => 1,
'c' => 2
);
uasort($myArray, function($a, $b) {
return $a - $b;
});
print_r($myArray);
```
В результате выполнения данного кода массив $myArray будет отсортирован по значениям ключей в порядке возрастания. Таким образом, можно управлять порядком элементов в ассоциативном массиве вручную, используя пользовательскую функцию сравнения.
Таким образом, ответ на вопрос "Можно ли в PHP отсортировать ассоциативный массив в ручную?" — да, можно. Используя функцию uasort() и задавая пользовательскую функцию сравнения, вы можете отсортировать ассоциативный массив по значениям ключей или элементов в соответствии с вашими потребностями.