【问题标题】:Sorting Multi-Dimensional Array Not Working排序多维数组不起作用
【发布时间】:2014-09-15 22:39:48
【问题描述】:

我有一个数组变量 $data,我正在尝试按字母顺序对其进行排序。我正在经历一个 foreach 循环并尝试对密钥进行排序。

中间的数组没有被排序以匹配其他数组。 Yelp 应该是最后一个,而不是 DealerRater 显示在最后。

我正在尝试这个:

foreach ($data as $key=>$value) {
   ksort($key);
}

我的 $data 数组:

Array
(
[1] => Array
    (
        [Cars.com] => Array
            (
                [rooftop_id] => 1
                [rooftop_name] => Norm Reeves Honda - Cerritos
                [name] => Cars.com
                [review_site_id] => 30
                [review_count] => 289
                [review_average] => 4.80
            )

        [Dealer Rater] => Array
            (
                [rooftop_id] => 1
                [rooftop_name] => Norm Reeves Honda - Cerritos
                [name] => Dealer Rater
                [review_site_id] => 10
                [review_count] => 1231
                [review_average] => 4.90
            )

        [Google+ Local] => Array
            (
                [rooftop_id] => 1
                [rooftop_name] => Norm Reeves Honda - Cerritos
                [name] => Google+ Local
                [review_site_id] => 31
                [review_count] => 556
                [review_average] => 4.80
            )

        [Yelp] => Array
            (
                [rooftop_id] => 1
                [rooftop_name] => Norm Reeves Honda - Cerritos
                [name] => Yelp
                [review_site_id] => 29
                [review_count] => 423
                [review_average] => 3.50
            )

    )

[45] => Array
    (
        [Cars.com] => Array
            (
                [rooftop_id] => 45
                [rooftop_name] => Leith Volkswagen of Raleigh
                [name] => Cars.com
                [review_site_id] => 30
                [review_count] => 95
                [review_average] => 4.90
            )

        [Google+ Local] => Array
            (
                [rooftop_id] => 45
                [rooftop_name] => Leith Volkswagen of Raleigh
                [name] => Google+ Local
                [review_site_id] => 31
                [review_count] => 21
                [review_average] => 4.80
            )

        [Yelp] => Array
            (
                [rooftop_id] => 45
                [rooftop_name] => Leith Volkswagen of Raleigh
                [name] => Yelp
                [review_site_id] => 29
                [review_count] => 3
                [review_average] => 1.50
            )

        [Dealer Rater] => Array
            (
                [rooftop_id] => 45
                [rooftop_name] => Leith Volkswagen of Raleigh
                [name] => Dealer Rater
                [review_site_id] => 10
                [review_count] => 0
                [review_average] => 0
            )

    )

[56] => Array
    (
        [Cars.com] => Array
            (
                [rooftop_id] => 56
                [rooftop_name] => Wilde Jaguar Of Sarasota
                [name] => Cars.com
                [review_site_id] => 30
                [review_count] => 34
                [review_average] => 4.70
            )

        [Dealer Rater] => Array
            (
                [rooftop_id] => 56
                [rooftop_name] => Wilde Jaguar Of Sarasota
                [name] => Dealer Rater
                [review_site_id] => 10
                [review_count] => 271
                [review_average] => 4.90
            )

        [Google+ Local] => Array
            (
                [rooftop_id] => 56
                [rooftop_name] => Wilde Jaguar Of Sarasota
                [name] => Google+ Local
                [review_site_id] => 31
                [review_count] => 31
                [review_average] => 4.70
            )

        [Yelp] => Array
            (
                [rooftop_id] => 56
                [rooftop_name] => Wilde Jaguar Of Sarasota
                [name] => Yelp
                [review_site_id] => 29
                [review_count] => 1
                [review_average] => 1.00
            )

    )
)

【问题讨论】:

  • 看相关问题

标签: php arrays sorting multidimensional-array


【解决方案1】:

您排序错误的值。这样做:

foreach ($data as $key=>$value) {
   ksort($value);
}

$key 是主数组的索引。 $value 是要排序的数组元素。如果您更合乎逻辑地命名变量会更有意义,如下所示:

foreach ($data as $index=>$element) {
   ksort($element);
}

或简称:

foreach ($data as $element) {
   ksort($element);
}

【讨论】:

    猜你喜欢
    • 2013-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多