首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在laravel 6- php中对值在另一个数组中的多维数组排序

在laravel 6- php中对值在另一个数组中的多维数组排序
EN

Stack Overflow用户
提问于 2020-10-20 14:41:11
回答 1查看 36关注 0票数 1

我想用'fee_category‘值对下面的数组进行排序。数组的第一个键是日期,在每个日期中,它可能包含多个费用,如第4个和第5个日期(即2020-10-15和2020-10-14)。我只需要一个简单的方法来完成这个排序。我尝试了usort(),但没有像预期的那样工作。

代码语言:javascript
复制
Array(
    [2020-10-19] => 
    Array(
        [0] => Array(
            [fee_fare] => 2650
            [fee_category] => Tuition Fee
        )
    )
    [2020-10-17] => 
    Array(
        [0] => Array(
            [fee_fare] => 630
            [fee_category] => Special Fee
        )
    )
    [2020-10-16] => 
    Array(
        [0] => Array(
            [fee_fare] => 800
            [fee_category] => Special Fee
        )
    )
    [2020-10-15] => 
    Array(
        [0] => Array(
            [fee_fare] => 550
            [fee_category] => Special Fee
        )
        [1] => Array(
            [fee_fare] => 550
            [fee_category] => Special Fee
        )
        [2] => Array(
            [fee_fare] => 2650
            [fee_category] => Tuition Fee
        )
        [3] => Array(
            [fee_fare] => 3850
            [fee_category] => Tuition Fee
        )
        [4] => Array(
            [fee_fare] => 630
            [fee_category] => Special Fee
        )
    )
    [2020-10-14] => 
    Array(
        [0] => Array(
            [fee_fare] => 550
            [fee_category] => Special Fee
        )
        [1] => Array(
            [fee_fare] => 2650
            [fee_category] => Tuition Fee
        )
        [2] => Array(
            [fee_fare] => 550
            [fee_category] => Special Fee
        )
        [3] => Array(
            [fee_fare] => 1325
            [fee_category] => Tuition Fee
        )
        [4] => Array(
            [fee_fare] => 550
            [fee_category] => Special Fee
        )
        [5] => Array([fee_fare] => 800
            [fee_category] => Special Fee
        )
        [6] => Array([fee_fare] => 2700
            [fee_category] => Tuition Fee
        )
    )
)

预期输出

代码语言:javascript
复制
Array(
[2020-10-19] => 
Array(
    [0] => Array(
        [fee_fare] => 2650
        [fee_category] => Tuition Fee
    )
)
[2020-10-17] => 
Array(
    [0] => Array(
        [fee_fare] => 630
        [fee_category] => Special Fee
    )
)
[2020-10-16] => 
Array(
    [0] => Array(
        [fee_fare] => 800
        [fee_category] => Special Fee
    )
)
[2020-10-15] => 
Array(
    [0] => Array(
        [fee_fare] => 550
        [fee_category] => Special Fee
    )
    [1] => Array(
        [fee_fare] => 550
        [fee_category] => Special Fee
    )
    [4] => Array(
        [fee_fare] => 630
        [fee_category] => Special Fee
    )
    [2] => Array(
        [fee_fare] => 2650
        [fee_category] => Tuition Fee
    )
    [3] => Array(
        [fee_fare] => 3850
        [fee_category] => Tuition Fee
    )
)
[2020-10-14] => 
Array(
    [0] => Array(
        [fee_fare] => 550
        [fee_category] => Special Fee
    )
    [2] => Array(
        [fee_fare] => 550
        [fee_category] => Special Fee
    )
    [4] => Array(
        [fee_fare] => 550
        [fee_category] => Special Fee
    )
    [5] => Array(
        [fee_fare] => 800
        [fee_category] => Special Fee
    )
    [1] => Array(
        [fee_fare] => 2650
        [fee_category] => Tuition Fee
    )
    [3] => Array(
        [fee_fare] => 1325
        [fee_category] => Tuition Fee
    )
    [6] => Array([fee_fare] => 2700
        [fee_category] => Tuition Fee
    )
)

)

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2020-10-20 15:22:15

以下是结合使用array_multisortarray_column所需的功能

代码语言:javascript
复制
$arr = [
    '2020-10-19' =>
        [
            0 => [
                'fee_fare' => 2650,
                'fee_category' => 'Tuition Fee'
            ]
        ],
    '2020-10-17' =>
        [
            0 => [
                'fee_fare' => 630,
                'fee_category' => 'Special Fee'
            ]
        ],
    '2020-10-16' =>
        [
            0 => [
                'fee_fare' => 800,
                'fee_category' => 'Special Fee'
            ]
        ],
    '2020-10-15' =>
        [
            0 => [
                'fee_fare' => 550,
                'fee_category' => 'Special Fee'
            ],
            1 => [
                'fee_fare' => 550,
                'fee_category' => 'Special Fee'
            ],
            2 => [
                'fee_fare' => 2650,
                'fee_category' => 'Tuition Fee'
            ],
            3 => [
                'fee_fare' => 3850,
                'fee_category' => 'Tuition Fee'
            ],
            4 => [
                'fee_fare' => 630,
                'fee_category' => 'Special Fee'
            ],
        ],
    '2020-10-14' => [
        0 => [
            'fee_fare' => 550,
            'fee_category' => 'Special Fee'
        ],
        1 => [
            'fee_fare' => 2650,
            'fee_category' => 'Tuition Fee'
        ],
        2 => [
            'fee_fare' => 550,
            'fee_category' => 'Special Fee'
        ],
        3 => [
            'fee_fare' => 1325,
            'fee_category' => 'Tuition Fee'
        ],
        4 => [
            'fee_fare' => 550,
            'fee_category' => 'Special Fee'
        ],
        5 => [
            'fee_fare' => 800,
            'fee_category' => 'Special Fee'
        ],
        6 => [
            'fee_fare' => 2700,
            'fee_category' => 'Tuition Fee'
        ]
    ]
];

foreach($arr as $key => $a){
    array_multisort(
        array_column($a, 'fee_fare'),
        SORT_ASC,
        $a
    );
    $arr[$key] = $a;
}



echo "<pre>";
echo "<b>".__FILE__."</b><br/>";
var_dump($arr);
echo "</pre>";
die();

Otput是:

代码语言:javascript
复制
array (size=5)
  '2020-10-19' => 
    array (size=1)
      0 => 
        array (size=2)
          'fee_fare' => int 2650
          'fee_category' => string 'Tuition Fee' (length=11)
  '2020-10-17' => 
    array (size=1)
      0 => 
        array (size=2)
          'fee_fare' => int 630
          'fee_category' => string 'Special Fee' (length=11)
  '2020-10-16' => 
    array (size=1)
      0 => 
        array (size=2)
          'fee_fare' => int 800
          'fee_category' => string 'Special Fee' (length=11)
  '2020-10-15' => 
    array (size=5)
      0 => 
        array (size=2)
          'fee_fare' => int 550
          'fee_category' => string 'Special Fee' (length=11)
      1 => 
        array (size=2)
          'fee_fare' => int 550
          'fee_category' => string 'Special Fee' (length=11)
      2 => 
        array (size=2)
          'fee_fare' => int 630
          'fee_category' => string 'Special Fee' (length=11)
      3 => 
        array (size=2)
          'fee_fare' => int 2650
          'fee_category' => string 'Tuition Fee' (length=11)
      4 => 
        array (size=2)
          'fee_fare' => int 3850
          'fee_category' => string 'Tuition Fee' (length=11)
  '2020-10-14' => 
    array (size=7)
      0 => 
        array (size=2)
          'fee_fare' => int 550
          'fee_category' => string 'Special Fee' (length=11)
      1 => 
        array (size=2)
          'fee_fare' => int 550
          'fee_category' => string 'Special Fee' (length=11)
      2 => 
        array (size=2)
          'fee_fare' => int 550
          'fee_category' => string 'Special Fee' (length=11)
      3 => 
        array (size=2)
          'fee_fare' => int 800
          'fee_category' => string 'Special Fee' (length=11)
      4 => 
        array (size=2)
          'fee_fare' => int 1325
          'fee_category' => string 'Tuition Fee' (length=11)
      5 => 
        array (size=2)
          'fee_fare' => int 2650
          'fee_category' => string 'Tuition Fee' (length=11)
      6 => 
        array (size=2)
          'fee_fare' => int 2700
          'fee_category' => string 'Tuition Fee' (length=11)

正如您所看到的,我们遍历"main“数组,将其拆分为$key => $value,然后根据”fee_fare“列的值对子数组使用array_multisort

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64439751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档