2016-04-18 19 views
0

私は、配列のインデックスを交換するアレイPHPで配列要素を入れ替える方法は?

  Array 
       (
        [0] => Array 
         (        
          [order_id] => 1318 
          [code] => shipping 
          [title] => UK Shipping (Weight: 0.00kg) 
          [value] => 10.2000         
         ) 

        [1] => Array 
         (

          [order_id] => 1318 
          [code] => sub_total 
          [title] => Sub-Total 
          [value] => 4.7000         
         ) 

        [2] => Array 
         (        
          [order_id] => 1318 
          [code] => coupon 
          [title] => Coupon (10P) 
          [value] => -0.4700         
         ) 

        [3] => Array 
         (        
          [order_id] => 1318 
          [code] => tax 
          [title] => VAT (20%) 
          [value] => 2.8860 
          [sort_order] => 8 
         ) 

        [4] => Array 
         (        
          [order_id] => 1318 
          [code] => total 
          [title] => Total 
          [value] => 17.3160         
         ) 
        ) 

を持っています。 [code] =>クーポンを[code] => sub_total、クーポンが利用可能な場合は、配列インデックスを入れ替えたいと思います。 クーポンの位置を小計より上にしたい。 sub_totalの位置をvatの上にしたい。 どうすれば可能ですか? 私を助けてください。

+4

具体的な問題を明確にしたり、詳細を追加して必要なものを正確に強調してください。現在書かれているとおり、あなたが求めていることを正確に伝えるのは難しいです。この質問を明らかにするには、[How to Ask](http://stackoverflow.com/help/how-to-ask)ページを参照してください。 –

答えて

0

考えられる各値をcodeの順番で並べ替えることができます。

$custom_sort_order = array(
    'shipping' => 1, 
    'coupon' => 2, 
    'sub_total' => 3, 
    'tax' => 4, 
    'total' => 5); 

その後、あなたはあなたの所望の順序で配列項目を取得するためにusortの比較関数でそのカスタムソート順を使用することができます。

usort($your_array, function($x, $y) use ($custom_sort_order) { 

    // find the sort number for each item 
    $x = $custom_sort_order[$x['code']]; 
    $y = $custom_sort_order[$y['code']]; 

    // do the comparison 
    if ($x == $y) return 0; 
    return $x - $y; 
}); 
関連する問題