2010-03-18 8 views
0

내 배열은 다음과 같습니다. 어떻게 saleref로 정렬합니까?정렬 연관 배열 PHP

Array 
(
    [xml] => Array 
     (
      [sale] => Array 
       (
        [0] => Array 
         (
          [saleref] => 12345 
          [saleline] => 1 
          [product] => producta 
          [date] => 19/ 3/10 
          [manifest] =>  0 
          [qty] =>  1 
          [nextday] => 
          [order_status] => 
         ) 

        [1] => Array 
         (
          [saleref] => 12344 
          [saleline] => 1 
          [product] => productb 
          [date] => 18/ 3/10 
          [manifest] => 11892 
          [qty] =>  1 
          [nextday] => 
          [order_status] => 
         ) 
+0

중복 : http://stackoverflow.com/questions/2426917/how-do-i- sort-a-multidimensional-array-by-one-of-the-in-array-in –

답변

0

예 : uasort()

예를 들어 스크립트를 사용하여 :

$data = getData(); 
uasort($data['xml']['sale'], function($a, $b) { return strcasecmp($a['saleref'], $b['saleref']); }); 
print_r($data); 

function getData() { 
return array(
    'xml' => array(
    'sale' => array (
     array(
     'saleref' => '12345', 
     'saleline' => 1, 
     'product' => 'producta', 
     'date' => '19/ 3/10', 
     'manifest' => 0, 
     'qty' => 1, 
     'nextday' => false, 
     'order_status' => false 
    ), 

     array(
     'saleref' => '12344', 
     'saleline' => 1, 
     'product' => 'productb', 
     'date' => '18/ 3/10', 
     'manifest' => 11892, 
     'qty' => 1, 
     'nextday' => false, 
     'order_status' => false 
    ) 
    ) 
) 
); 
} 
당신이 maintain index association 사용 uasort()해야하는 경우
5
function cmp($a, $b) { 
    if ($a['saleref'] == $b['saleref']) { 
     return 0; 
    } 
    return ($a['saleref'] < $b['saleref']) ? -1 : 1; 
} 

uasort($array['xml']['sale'], 'cmp'); 
1

.

그렇지 않으면 usort()would work

예제 코드는, 수동 의견에서 들어 올려 불통 :

function sortSalesRef($a, $b) { 

    $a = $a['saleref']; 
    $b = $b['saleref']; 

    if ($a == $b) { 
     return 0; 
    } 

    return ($a < $b) ? -1 : 1; 

} 

usort($xml['xml']['sale'], 'sortSalesRef'); 
0
<?php 
// Comparison function 
function cmp($a, $b) 
{ 
    if ($a == $b) 
     { 
      return 0; 
     } 
    return ($a < $b) ? -1 : 1; 
} 
$array = array('a' => 4, 'b' => 8, 'c' => -1, 'd' => -9, 'e' => 2, 'f' => 5, 'g' => 3, 'h' => -4); 
print_r($array); 
uasort($array, 'cmp'); 
print_r($array); 
?>