在 php 中使用键值对对多维数组进行排序


Sorting multidimensional array with key value pair in php

我有一个带有状态的数组,其中包含键值对,其中键是公司。

我想对每个州的数组进行排序,以便首先列出值最高的公司,最后列出值最低的公司。

array(
         [Uttar Pradesh] => Array
                  (
                   [Noida Power Company Ltd] => 111.83
                   [Uttar Pradesh Power Corporation Ltd] => 74.51
                   [Anpara-C TPS] => 72.73
                   [Matatila HPS (UPJVUN)] => 1.88
                   [Rihand Hydro Power Station] => 3.57
                   [Unchahar Solar] => 2.15
                  )
         [Odisha] => Array
                  (
                        [Grid Company of Orissa] => 57.2
                        [Sail Rourkela Steel Plant] => 1.03
                        [GMR Kamalanga Energy Ltd.] => 271.62
                        [Jindal Stainless Ltd, Orissa] => 63.78
                        [Sterlite Energy Limited] => 209.48
                        [Talcher Solar] => 1.69
                   )
)

我希望输出数组为

array(
    [Uttar Pradesh] => Array
        (
            [Noida Power Company Ltd] => 111.83
            [Uttar Pradesh Power Corporation Ltd] => 74.51
            [Anpara-C TPS] => 72.73
            [Rihand Hydro Power Station] => 3.57
            [Unchahar Solar] => 2.15
            [Matatila HPS (UPJVUN)] => 1.88
        )
    [Odisha] => Array
        (
            [GMR Kamalanga Energy Ltd.] => 271.62
            [Sterlite Energy Limited] => 209.48
            [Jindal Stainless Ltd, Orissa] => 63.78
            [Grid Company of Orissa] => 57.2
            [Talcher Solar] => 1.69
            [Sail Rourkela Steel Plant] => 1.03 
        )

在网上搜索,但无法回答我的要求,请帮助我。

遍历数组并使用 arsort 通过降序对值进行排序来创建数组。

$array = array(
         "Uttar Pradesh" => array
                  (
                   "Noida Power Company Ltd" => 111.83,
                   "Uttar Pradesh Power Corporation Ltd" => 74.51,
                   "Anpara-C TPS" => 72.73,
                   "Matatila HPS (UPJVUN)" => 1.88,
                   "Rihand Hydro Power Station" => 3.57,
                   "Unchahar Solar" => 2.15
                  ),
                "Odisha" => array
                    (
                        "Grid Company of Orissa" => 57.2,
                        "Sail Rourkela Steel Plant" => 1.03,
                        "GMR Kamalanga Energy Ltd." => 271.62,
                        "Jindal Stainless Ltd, Orissa" => 63.78,
                        "Sterlite Energy Limited" => 209.48,
                        "Talcher Solar" => 1.69
                    )
            );
foreach ($array as $key => &$value) {
  arsort($value);
}
echo "<pre>";
print_r($array);
echo "</pre>";

礼貌:@u_mulder在评论中