Скажем, я начал здесь:
$arr[0] = array('a' => 'a', 'int' => 10); $arr[1] = array('a' => 'foo', 'int' => 5); $arr[2] = array('a' => 'bar', 'int' => 12);
И я хочу попасть сюда:
$arr[0] = array('a' => 'foo', 'int' => 5); $arr[1] = array('a' => 'a', 'int' => 10); $arr[2] = array('a' => 'bar', 'int' => 12);
Как я могу отсортировать элементы в массиве с помощью элементов этих элементов?
Многомерные массивы всегда чувствуют себя немного больше, чем мой мозг может справиться (-_-) (пока я не выясню их, и они кажутся очень легкими)
Вы хотите заказать их по значению ключа «int»?
Используйте uasort с функцией обратного вызова:
function compare_by_int_key($a, $b) { if ($a['int'] == $b['int']) { return 0; } return ($a['int'] < $b['int']) ? -1 : 1; } uasort($arr, "compare_by_int_key");
сначала не забудьте изменить переменную индекса, которую вы используете для ссылки на массив, потому что теперь у вас есть только два элемента в базовом массиве, потому что вы дважды присваиваете значение $ arr [1].
Вот код:
// for the number of elements in the base array for ( $eye = 0; $eye < sizeOf($arr); $eye += 1) { // grab each element in the array for ( $jay = 0; $jay < sizeOf($arr); $jay += 1) { // if the second element of the base array's current element // is greater than the next one if ( $arr[$jay][1] > $arr[$jay + 1][1] ) { // then swap those values $temp = $arr[$jay] $arr[$jay] = $arr[$jay+1] $arr[$jay+1] = $temp } } }
Имейте в виду, что я не тестировал этот код, поэтому вам может потребоваться небольшая отладка. Это должно сортироваться так, как вы этого хотите, есть более быстрые способы выполнения этого поиска, но это упрощение, и я попытался дать вам некоторое объяснение в коде комментария.
Надеюсь, это поможет, Гейл