【问题标题】:How do I Custom Sort a Multidimensional Array in PHP (codeingiter)如何在 PHP (codeigniter) 中自定义排序多维数组
【发布时间】:2020-05-27 16:55:14
【问题描述】:

我有一个类似的数组:

Array
(
    [0] => Array
        (
            [category_id] => 411
            [category_name] => some text
            [data] => Array
                (
                    [1] => stdClass Object
                        (
                            [album_id] => 91689
                            [name] => some text                            
                            [pubDate] => December 23, 2019
                        )

                    [0] => stdClass Object
                        (
                            [album_id] => 91670
                            [name] => some text                           
                            [pubDate] => November 23, 2019
                        )

                )

        )

    [1] => Array
        (
            [category_id] => 15755
            [category_name] => some text
            [data] => Array
                (
                    [1] => stdClass Object
                        (
                            [album_id] => 93624
                            [name] => some text                           
                            [pubDate] => January 02, 2019
                        )

                    [0] => stdClass Object
                        (
                            [album_id] => 93621
                            [name] => some text                            
                            [pubDate] => January 02, 2019
                        )

                )

        )

    [2] => Array
        (
            [category_id] => 15879
            [category_name] => some text
            [data] => Array
                (
                    [0] => stdClass Object
                        (
                            [album_id] => 91683
                            [name] => some text                          
                            [pubDate] => December 31, 2019
                        )

                )

        )

    [3] => Array
        (
            [category_id] => 456
            [category_name] => some text
            [data] => Array
                (
                    [3] => stdClass Object
                        (
                            [album_id] => 93675
                            [name] => some text                           
                            [pubDate] => January 03, 2019
                        )

                    [2] => stdClass Object
                        (
                            [album_id] => 91679
                            [name] => some text
                            [pubDate] => November 23, 2019
                        )

                    [1] => stdClass Object
                        (
                            [album_id] => 91675
                            [name] => some text
                            [pubDate] => November 23, 2019
                        )

                    [0] => stdClass Object
                        (
                            [album_id] => 91667
                            [name] => some text
                            [pubDate] => November 23, 2019
                        )

                )

        )

    [4] => Array
        (
            [category_id] => 435
            [category_name] => some text
            [data] => Array
                (
                    [2] => stdClass Object
                        (
                            [album_id] => 93552
                            [name] => some text
                            [pubDate] => December 31, 2019
                        )

                    [1] => stdClass Object
                        (
                            [album_id] => 91685
                            [name] =>some text
                            [pubDate] => November 23, 2019
                        )

                    [0] => stdClass Object
                        (
                            [album_id] => 91677
                            [name] => some text
                            [pubDate] => November 23, 2019
                        )

                )

        )

)

我想要这样:

Array
(
    [0] => Array
        (
            [category_id] => 411
            [category_name] => some text
            [data] => Array
                (
                    [1] => stdClass Object
                        (
                            [album_id] => 91689
                            [name] => some text                            
                            [pubDate] => December 23, 2019
                        )

                    [0] => stdClass Object
                        (
                            [album_id] => 91670
                            [name] => some text                           
                            [pubDate] => November 23, 2019
                        )

                )

        )

    [1] => Array
        (
            [category_id] => 15755
            [category_name] => some text
            [data] => Array
                (
                    [1] => stdClass Object
                        (
                            [album_id] => 93624
                            [name] => some text                           
                            [pubDate] => January 02, 2019
                        )

                    [0] => stdClass Object
                        (
                            [album_id] => 93621
                            [name] => some text                            
                            [pubDate] => January 02, 2019
                        )

                )

        )

    [2] => Array
        (
            [category_id] => 15879
            [category_name] => some text
            [data] => Array
                (
                    [0] => stdClass Object
                        (
                            [album_id] => 91683
                            [name] => some text                          
                            [pubDate] => December 31, 2019
                        )

                )

        )

    [3] => Array
        (
            [category_id] => 456
            [category_name] => some text
            [data] => Array
                (
                    [3] => stdClass Object
                        (
                            [album_id] => 93675
                            [name] => some text                           
                            [pubDate] => January 03, 2019
                        )

                    [2] => stdClass Object
                        (
                            [album_id] => 91679
                            [name] => some text
                            [pubDate] => November 23, 2019
                        )

                    [1] => stdClass Object
                        (
                            [album_id] => 91667
                            [name] => some text
                            [pubDate] => November 23, 2019
                        )

                    [0] => stdClass Object
                        (
                            [album_id] => 91675
                            [name] => some text
                            [pubDate] => November 23, 2019
                        )

                )

        )

    [4] => Array
        (
            [category_id] => 435
            [category_name] => some text
            [data] => Array
                (
                    [2] => stdClass Object
                        (
                            [album_id] => 91685
                            [name] => some text
                            [pubDate] => December 31, 2019
                        )

                    [1] => stdClass Object
                        (
                            [album_id] => 91677
                            [name] =>some text
                            [pubDate] => November 23, 2019
                        )

                    [0] => stdClass Object
                        (
                            [album_id] => 93552
                            [name] => some text
                            [pubDate] => November 23, 2019
                        )

                )

        )

)

请帮忙! 谢谢!

【问题讨论】:

  • 如果您能解释一下排序标准是什么,那么回答问题会容易得多。
  • 我从循环中得到这个数组。所以,它可以是更多或更少的数据,它取决于循环。
  • 对你有好处,但这完全不能回答你刚才被问到的问题。
  • 请阅读How to Ask。您的问题不仅不清楚,您还应该展示自己到目前为止所做的尝试。

标签: php arrays codeigniter sorting


【解决方案1】:

您可以使用usort 对内部数组进行相同的排序,

//convert to array if not,
$arr = json_decode(json_encode($arr), true);
function custom($a, $b)
{
    if(($a["album_id"] == $a["album_id"])) return 0;
    return ($a["album_id"] >= $a["album_id"]) ? -1 : 1; // interchange for order change
}
foreach($arr as &$v){
    uasort($v['data'], "custom");    
}

Demo

输出:-

Array
(
    [0] => Array
        (
            [category_id] => 411
            [category_name] => some text
            [data] => Array
                (
                    [0] => Array
                        (
                            [album_id] => 91689
                            [name] => some text                            
                            [pubDate] => December 23, 2019
                        )

                    [1] => Array
                        (
                            [album_id] => 91670
                            [name] => some text                           
                            [pubDate] => November 23, 2019
                        )

                )

        )

    [1] => Array
        (
            [category_id] => 15755
            [category_name] => some text
            [data] => Array
                (
                    [0] => Array
                        (
                            [album_id] => 93624
                            [name] => some text                           
                            [pubDate] => January 02, 2019
                        )

                    [1] => Array
                        (
                            [album_id] => 93621
                            [name] => some text                            
                            [pubDate] => January 02, 2019
                        )

                )

        )

    [2] => Array
        (
            [category_id] => 15879
            [category_name] => some text
            [data] => Array
                (
                    [0] => Array
                        (
                            [album_id] => 91683
                            [name] => some text                          
                            [pubDate] => December 31, 2019
                        )

                )

        )

    [3] => Array
        (
            [category_id] => 456
            [category_name] => some text
            [data] => Array
                (
                    [0] => Array
                        (
                            [album_id] => 93675
                            [name] => some text                           
                            [pubDate] => January 03, 2019
                        )

                    [1] => Array
                        (
                            [album_id] => 91679
                            [name] => some text
                            [pubDate] => November 23, 2019
                        )

                    [2] => Array
                        (
                            [album_id] => 91675
                            [name] => some text
                            [pubDate] => November 23, 2019
                        )

                    [3] => Array
                        (
                            [album_id] => 91667
                            [name] => some text
                            [pubDate] => November 23, 2019
                        )

                )

        )

    [4] => Array
        (
            [category_id] => 435
            [category_name] => some text
            [data] => Array
                (
                    [0] => Array
                        (
                            [album_id] => 93552
                            [name] => some text
                            [pubDate] => December 31, 2019
                        )

                    [1] => Array
                        (
                            [album_id] => 91685
                            [name] => some text
                            [pubDate] => November 23, 2019
                        )

                    [2] => Array
                        (
                            [album_id] => 91677
                            [name] => some text
                            [pubDate] => November 23, 2019
                        )

                )

        )

)

【讨论】:

  • 它按升序给我数组,但我需要一个自定义排序,就像我需要时我可以更改索引位置自定义,并且每个数组应该不同。你可以看到 [3] =>array() ,输出应该是什么。
  • 那么改变排序顺序的逻辑或标准是什么?
  • 就像每当我们需要手动更改数组索引的顺序时,我们可以轻松更改,例如有时我需要在索引 0 之前索引 1,有时我最后需要索引 1,这取决于要求。
  • 那我也没办法了。你必须指定一些东西
猜你喜欢
  • 2014-04-01
  • 2012-02-16
  • 1970-01-01
  • 1970-01-01
  • 2019-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多