Сортировка множества многомерных массивов элементами массива

Скажем, я начал здесь:

$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 } } } 

Имейте в виду, что я не тестировал этот код, поэтому вам может потребоваться небольшая отладка. Это должно сортироваться так, как вы этого хотите, есть более быстрые способы выполнения этого поиска, но это упрощение, и я попытался дать вам некоторое объяснение в коде комментария.

Надеюсь, это поможет, Гейл