2013-07-18 26 views
0

多維數組我有這樣的多維數組,稱爲$rent排序在PHP

Array 
(
    [product2] => Array 
     (
      [dates] => Array 
       (
        [2013-07-25] => 2 
        [2013-07-23] => 1 
        [2013-07-21] => 3 
       ) 

     ) 

    [product3] => Array 
     (
      [dates] => Array 
       (
        [2013-07-24] => 5 
        [2013-07-22] => 4 
        [2013-07-20] => 3 
       ) 

     ) 

    [product1] => Array 
     (
      [dates] => Array 
       (
        [2013-07-29] => 1 
        [2013-07-28] => 2 
        [2013-07-27] => 2 
       ) 

     ) 

) 

我想做一個雙排序:

  1. 首先,上升了ProductX
  2. 然後,對於每個產品,按升序日期

因此,生成的數組將會b e:

Array 
(
    [product1] => Array 
     (
      [dates] => Array 
       (
        [2013-07-27] => 2 
        [2013-07-28] => 2 
        [2013-07-29] => 1 
       ) 

     ) 

    [product2] => Array 
     (
      [dates] => Array 
       (
        [2013-07-21] => 3 
        [2013-07-23] => 1 
        [2013-07-25] => 2 
       ) 

     ) 

    [product3] => Array 
     (
      [dates] => Array 
       (
        [2013-07-20] => 3 
        [2013-07-22] => 4 
        [2013-07-24] => 5 
       ) 

     ) 

) 

我該如何達到這個目標?提前

+0

我試圖在array_multisort($租金),什麼都沒有發生 – Ivan

回答

1

非常感謝試試這個:

ksort($rent); 
foreach($rent as &$item) { 
    ksort($item['dates']); 
} 
+0

這工作很細,非常感謝! – Ivan

1

你可以簡單地ksort的產品,然後遍歷它們,並使用相同的日期鍵。

ksort($products); 

foreach($products as &$product) 
    ksort($product['dates']); 

其中$products是您向我們展示的數組。請注意,您需要將foreach循環中的值作爲參考(使用&運算符),否則更改將不會在原始數組中更新。

+0

這與另一個「ksort」而不是「asort」(當然與$ rent爲原始數組,如我所述)一起工作:謝謝 – Ivan

+0

什麼?那裏沒有'asort'。 –

+0

有一個asort($ product ['dates']);幾分鐘前:你是否編輯過答案?或者我的眼睛太累了? :-) – Ivan

1

爲了我的理解你的問題; Nadh的解決方案几乎就在那裏。但我相信你想ksort()

這是我更正NADH答案

ksort($rent); 

foreach($rent as $product => $dates) { 
    ksort($rent[$product]['dates']); 
} 

print_r($rent);