2013-02-04 55 views
0

在此先感谢大家的帮助。需要帮助排序深层嵌套值的PHP数组

我有以下多维数组:

[list] => Array (
    [0] => Array (
     [retailer] => ABC Store 
     [locations] => Array (
      [0] => Array (
       [distance] => 2.86 
      ) 
      [1] => Array (
       [distance] = 5.50 
      ) 
     ) 
    ) 

    [1] => Array (
     [retailer] => XYZ Store 
     [locations] => Array (
      [0] => Array (
       [distance] => 1.25 
      ) 
      [1] => Array (
       [distance] = 7.50 
      ) 
     ) 
    ) 
) 

我想基于位置阵列内的最近距离零售商进行排序。因此,新的Array将在ABC Store之前列出XYZ Store

我试过使用array_multisort,但我遇到的问题是将主阵列与嵌套了几层的按键排序在一起。

回答

0
$list = array(
    array(
     "retailer" => "ABC Store", 
     "locations" => array(
      array(
       "distance" => 2.86 
      ) , 
      array(
       "distance" => 5.50 
      ) 
     ) 
    ) , 
    array(
     "retailer" => "XYZ Store", 
     "locations" => array(
      array(
       "distance" => 1.25 
      ) , 
      array(
       "distance" => 7.50 
      ) 
     ) 
    ) 
); 

foreach($list as $info) { 
    $storeinfo[$info["retailer"]] = $info; 
    foreach($info["locations"] as $location) { 
     $distances[] = $location["distance"]; 
    } 
    $stores[$info["retailer"]] = min($distances); 
} 

natsort($stores); 

foreach($stores as $store => $distance) { 
    $newlist[] = $storeinfo[$store]; 
} 

echo "<pre>"; 
print_r($newlist); 
echo "</pre>"; 
+0

@Rusty这是否适合您?或者你需要进一步的帮助? – Antony