簡體   English   中英

在PHP中對多維數組進行排序

[英]Sort a multidimensional array in PHP

我有一個多維數組,稱為$rent

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. 一,按產品X升序
  2. 然后,對於每種產品,按租金升序排列

這樣結果數組將是:

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
                )

        )

)

我怎樣才能做到這一點? 提前謝謝了

嘗試這個:

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

您可以簡單地對產品進行排序 ,然后對其進行遍歷並將其用於日期鍵。

ksort($products);

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

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

據我了解您的問題; Nadh解決方案幾乎就在那里。 但我相信你想要ksort()

這是我對納德答案的更正

ksort($rent);

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

print_r($rent);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM