0

我有这个多维数组,称为$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. 一、按productX升序
  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
                )

        )

)

我怎样才能做到这一点?提前谢谢了

4

3 回答 3

1

尝试这个:

ksort($rent);
foreach($rent as &$item) {
    ksort($item['dates']);
}
于 2013-07-18T10:27:34.407 回答
1

您可以简单地对产品进行ksort 排序,然后遍历它们并将其用于日期键。

ksort($products);

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

$products您向我们展示的阵列在哪里。请注意,您需要将 foreach 循环中的值作为参考(使用&运算符)传递,否则更改将不会在原始数组中更新。

于 2013-07-18T10:29:02.633 回答
1

为了我对您的问题的理解;Nadh 解决方案几乎就在那里。但我相信你想要 ksort()

这是我对 Nadh 答案的更正

ksort($rent);

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

print_r($rent);
于 2013-07-18T10:38:01.037 回答