2016-04-12 3 views
-1

Я хотел бы отсортировать массив по каждому второму значению элементов. Как этот пример ниже. Значения неизвестны.Сортировка неизвестных значений массива в php

array(4) { 
    [0]=> 
    array(2) { 
    [0]=> 
    int(2) 
    [1]=> 
    int(1)        **last in array** 
    } 
    [1]=> 
    array(2) { 
    [0]=> 
    int(7) 
    [1]=> 
    int(4)        **first in array** 
    } 
    [2]=> 
    array(2) { 
    [0]=> 
    int(5) 
    [1]=> 
    int(2)        **Second in array** 
    } 
} 
+1

'usort ($ MyArray, функция ($ a, $ b) { return $ a [1] <=> $ b [1]; }); '(PHP7) Для более ранних версий PHP вам придется изменить функцию обратного вызова, но [usort() docs] (http://php.net/manual/en/function.usort.php) дайте много примеров –

ответ

1

usort функция должна выполнять работу:

$arr = [ 
    [2, 1], 
    [7, 4], 
    [5, 2], 
]; 

usort($arr, function($a, $b){ 
    return $a[1] - $b[1]; 
}); 

print_r($arr); 

Выходной сигнал:

Array 
(
    [0] => Array 
     (
      [0] => 2 
      [1] => 1 
     ) 

    [1] => Array 
     (
      [0] => 5 
      [1] => 2 
     ) 

    [2] => Array 
     (
      [0] => 7 
      [1] => 4 
     ) 
) 
1

Здесь решение вдохновило от here

$input = array(array(2,1),array(7,4),array(5,2)); 
function method1($a,$b) 
{ 
    return ($a[1] <= $b[1]) ? 1 : -1; 
} 
usort($input, "method1"); 
print_r($input); 
Смежные вопросы