【问题标题】:How to Sort multidimensional array by value in php如何在php中按值对多维数组进行排序
【发布时间】:2019-11-20 10:06:43
【问题描述】:

您好,我需要按其值对多维数组进行排序我的数组是这样的>

Array
(
[prodata] => Array
        (
            [4] => Array
                (
                    [position] => 3
                    [products] => Array
                        (
                            [0] => 227
                        )

                )

            [3] => Array
                (
                    [position] => 4
                    [products] => Array
                        (
                            [0] => 441
                            [1] => 54
                        )

                )

        )
[richtext] => Array
        (
            [1] => Array
                (
                    [position] => 1
                    [header] => qwewqe
                    [content] => contentadaqsdas
)
)

)

我这个数组我需要按它的位置排序并创建一个新数组,

目标

Array
(
[0]=>Array(
[richtext] => Array
        (

        [position] => 1
        [header] => qwewqe
        [content] => contentadaqsdas            

)

)
[1]=>Array(
    [prodata] => Array
        (

        [position] => 3
        [products] => Array
            (
                [0] => 227
            )       

)

)
[2]=>Array(
    [prodata] => Array
        (

        [position] => 4
        [products] => Array
            (
                [0] => 441
                [1] => 54
            )       

)

)

)

如何获得此帮助

【问题讨论】:

  • 你有没有尝试过?
  • 你有什么尝试吗?排序?
  • 我尝试为每个创建新数组但不值得
  • $keys = array_column($myarray, '0'); array_multisort($keys, SORT_ASC, $myarray);试试这个,我用这个来解决类似的问题
  • 能否提供PHP数组输入?

标签: php arrays sorting multidimensional-array


【解决方案1】:

您可以先将多维数组展平,然后对其进行排序。 Demo

$flat_array = [];
foreach($multi_dimension_array as $k => $array){
    foreach($array as $value){
        $flat_array[] = array(
            $k => $value
        );
    }
}
usort($flat_array,function($a,$b){return current($a)["position"] - current($b)["position"];});

print_r($flat_array);

虽然这段代码有效,但我建议重构数据源以获得更好的数据格式。这可以使它变得容易

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-15
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 2021-07-11
    相关资源
    最近更新 更多