php как отсортировать двумерный массив по второму элементу по возрастанию
Есть двумерный массив
Нужно сделать сортировку по возрастанию по значениям из ключа 2.
$array = array();
$array[] = array("1" => "какой-то текст1", "2" => 3);
$array[] = array("1" => "какой-то текст2", "2" => 2);
$array[] = array("1" => "какой-то текст3", "2" => 1);
Нужно сделать сортировку по возрастанию по значениям из ключа 2.
Такую сортировку двумерного массива в PHP проще всего сделать встроенной функцией usort().
Первым параметров в нее отдаем наш созданный двумерных или многомерный массив.
А второй параметр это функция, в которую нам надо вернуть -1 0 или 1 в зависимости от сравнения двух элементов.
Если мы сравниваем значения в ключе 2, то нам нужно просто сравнить 3 больше 2 или меньше или равно и вернуть это для функции usort(). А она сама уже пересоберет массив и выдаст отсортированный.
Ключи указаны 1 - потому что в массивах нумерация с 0.
Первым параметров в нее отдаем наш созданный двумерных или многомерный массив.
А второй параметр это функция, в которую нам надо вернуть -1 0 или 1 в зависимости от сравнения двух элементов.
Если мы сравниваем значения в ключе 2, то нам нужно просто сравнить 3 больше 2 или меньше или равно и вернуть это для функции usort(). А она сама уже пересоберет массив и выдаст отсортированный.
usort($array, "cmp"); // название функции cmp
print_r($array); // Вывод
// функцию выносим в свободное место, за пределы if, foreach, while и т.д.
function cmp ($v1, $v2) { // эти переменный наугад взяты
/* Сравниваем значение по второму в массиве ключе */
if ($v1[1] == $v2[1]) return 0; // если равны то вернем 0
return ($v1[1] < $v2[1])? -1: 1; // иначе вернем -1 или 1 если меньше или больше
}
Ключи указаны 1 - потому что в массивах нумерация с 0.
Оставить свой ответ: