2017-07-03 185 views
2

如何使用自定義順序排序關聯數組? 我的陣列看起來像這樣使用自定義順序對關聯數組排序

Array 
(
    [pa_color] => Array 
     (
      [name] => pa_color 
      [value] => 
      [position] => 0 
      [is_visible] => 1 
      [is_variation] => 1 
      [is_taxonomy] => 1 
     ) 

    [pa_dimension] => Array 
     (
      [name] => pa_dimension 
      [value] => 
      [position] => 1 
      [is_visible] => 1 
      [is_variation] => 0 
      [is_taxonomy] => 1 
     ) 

    [pa_travel-duration] => Array 
     (
      [name] => pa_travel-duration 
      [value] => 
      [position] => 2 
      [is_visible] => 1 
      [is_variation] => 0 
      [is_taxonomy] => 1 
     ) 

    [pa_travel-type] => Array 
     (
      [name] => pa_travel-type 
      [value] => 
      [position] => 3 
      [is_visible] => 1 
      [is_variation] => 0 
      [is_taxonomy] => 1 
     ) 

    [pa_travelling-with] => Array 
     (
      [name] => pa_travelling-with 
      [value] => 
      [position] => 4 
      [is_visible] => 1 
      [is_variation] => 0 
      [is_taxonomy] => 1 
     ) 

    [pa_volume] => Array 
     (
      [name] => pa_volume 
      [value] => 
      [position] => 5 
      [is_visible] => 1 
      [is_variation] => 0 
      [is_taxonomy] => 1 
     ) 

    [pa_weight] => Array 
     (
      [name] => pa_weight 
      [value] => 
      [position] => 6 
      [is_visible] => 1 
      [is_variation] => 0 
      [is_taxonomy] => 1 
     ) 

) 

,我想這個數組類似於pa_travel-duration第一pa_volume秒?我知道有一個本地PHP功能usort,但我無法理解這一點。

+0

排序按哪個鍵或價值? –

+0

我想通過數組鍵如'[pa_dimension]'第一個現在是第二個和'[pa_color]'第二個是第一個 –

回答

0

這將做的工作了,但是我敢肯定有很多更好的方法來做到這一點:

代碼:

$array = array("pa_color" => "color", 
       "pa_dimension" => "dimension", 
       "pa_travel-duration" => "Random Stuff: " . rand(100,999), 
       "pa_volume" => "volumen" 
      ); 
$tmp = array("pa_travel-duration" => $array["pa_travel-duration"], 
      "pa_volume" => $array["pa_volume"], 
); 

unset($array["pa_travel-duration"], $array["pa_volume"]); 
$array = array_merge($tmp,$array); 


print_r($array); 

結果:

Array 
(
    [pa_travel-duration] => Random Stuff: 127 
    [pa_volume] => volumen 
    [pa_color] => color 
    [pa_dimension] => dimension 
) 

因爲如果陣列保重沒有正確的鍵會引發錯誤,你需要在那裏添加一些檢查。

+0

如果數組來自數據庫呢? –

0
$sort_by = array('pa_travel-duration', 'pa_volume', 'pa_color','pa_dimension','pa_travel-type','pa_travelling-with','pa_weight'); 
$temp_arr = array(); 
foreach ($sort_by as $key) { 
    $temp_arr[$key] = $data[$key]; 
} 
$data = $temp_arr; 

echo '<pre>'; print_r($data); 

定義您的訂單在$ sort_by陣列