2016-02-09 4 views
2

У меня есть массив выглядеть следующим образомСортировка Ассоциативный массив в PHP по значению ключа

Array 
(
    [0] => Array 
     (
      [width] => 1 
      [ladiesSeat] => 
      [fare] => 610 
      [zIndex] => 0 
      [serviceTaxAmount] => 35.38 
      [commission] => 
      [operatorServiceChargeAbsolute] => 0 
      [operatorServiceChargePercent] => 0 
      [totalFareWithTaxes] => 645.38 
      [bookedBy] => 
      [ac] => 
      [sleeper] => 
      [serviceTaxPer] => 5.8 
      [available] => 1 
      [row] => 0 
      [column] => 2 
      [length] => 1 
      [id] => M1 
     ) 

    [1] => Array 
     (
      [width] => 1 
      [ladiesSeat] => 
      [fare] => 610 
      [zIndex] => 0 
      [serviceTaxAmount] => 35.38 
      [commission] => 
      [operatorServiceChargeAbsolute] => 0 
      [operatorServiceChargePercent] => 0 
      [totalFareWithTaxes] => 645.38 
      [bookedBy] => 
      [ac] => 
      [sleeper] => 
      [serviceTaxPer] => 5.8 
      [available] => 1 
      [row] => 1 
      [column] => 0 
      [length] => 1 
      [id] => L21 
     ) 
     ............... 
     ............... 
    [n] => Array 
     (
      [width] => 1 
      [ladiesSeat] => 
      [fare] => 610 
      [zIndex] => 0 
      [serviceTaxAmount] => 35.38 
      [commission] => 
      [operatorServiceChargeAbsolute] => 0 
      [operatorServiceChargePercent] => 0 
      [totalFareWithTaxes] => 645.38 
      [bookedBy] => 
      [ac] => 
      [sleeper] => 
      [serviceTaxPer] => 5.8 
      [available] => 1 
      [row] => 0 
      [column] => 0 
      [length] => 1 
      [id] => L21 
     ) 
) 

Я хочу, чтобы отсортировать этот массив на основе значений row и column ключей в порядке возрастания. Вот ожидаемый результат.

Array 
    (
     [0] => Array 
      (
       [width] => 1 
       [ladiesSeat] => 
       [fare] => 610 
       [zIndex] => 0 
       [serviceTaxAmount] => 35.38 
       [commission] => 
       [operatorServiceChargeAbsolute] => 0 
       [operatorServiceChargePercent] => 0 
       [totalFareWithTaxes] => 645.38 
       [bookedBy] => 
       [ac] => 
       [sleeper] => 
       [serviceTaxPer] => 5.8 
       [available] => 1 
       [row] => 0 
       [column] => 0 
       [length] => 1 
       [id] => M1 
      ) 

     [1] => Array 
      (
       [width] => 1 
       [ladiesSeat] => 
       [fare] => 610 
       [zIndex] => 0 
       [serviceTaxAmount] => 35.38 
       [commission] => 
       [operatorServiceChargeAbsolute] => 0 
       [operatorServiceChargePercent] => 0 
       [totalFareWithTaxes] => 645.38 
       [bookedBy] => 
       [ac] => 
       [sleeper] => 
       [serviceTaxPer] => 5.8 
       [available] => 1 
       [row] => 0 
       [column] => 2 
       [length] => 1 
       [id] => L21 
      ) 
      ............... 
      ............... 
     [n] => Array 
      (
       [width] => 1 
       [ladiesSeat] => 
       [fare] => 610 
       [zIndex] => 0 
       [serviceTaxAmount] => 35.38 
       [commission] => 
       [operatorServiceChargeAbsolute] => 0 
       [operatorServiceChargePercent] => 0 
       [totalFareWithTaxes] => 645.38 
       [bookedBy] => 
       [ac] => 
       [sleeper] => 
       [serviceTaxPer] => 5.8 
       [available] => 1 
       [row] => 1 
       [column] => 2 
       [length] => 1 
       [id] => L21 
      ) 
    ) 

т.е. когда я напечатать значения row и column ключа в отсортированном ассоциативном массиве он должен выглядеть следующим образом.

00 
02 
12 

Так как я могу его сортировать?

ответ

1

Возможно, вы захотите немного почистить его для удобства чтения, функция немного грязная, но она должна выполнить свою работу. Любые проблемы просто дайте мне знать.

function rowColumnSort($a, $b) { 
    // Row is lower. 
    if ($a['row'] < $b['row']) { 
     return -1; 
    } 

    // Rows Match, check columns 
    if ($a['row'] == $b['row']) { 
     // Column Higher 
     if ($a['column'] > $b['column']) { 
      return 1; 
     } else { 
      // Column lower 
      return -1; 
     } 
    } 

    // Row is higher 
    if ($a['row'] > $b['row']) { 
     return 1; 
    } 
} 

usort($arr, 'rowColumnSort'); 

Пример: http://codepad.org/wyyqJCwg

Смежные вопросы