当前位置:  开发笔记 > 编程语言 > 正文

按特定顺序对PHP中的对象数组进行排序

如何解决《按特定顺序对PHP中的对象数组进行排序》经验,为你挑选了1个好方法。

我在PHP中有两个数组.第一个数组($ author_array)由特定顺序的user_ids组成,如下所示:(8,1,6)

第二个数组($ user_results)由一组对象组成,如下所示:

Array
(
    [0] => stdClass Object
        (
            [ID] => 1
            [user_login] => user1
        )
    [1] => stdClass Object
        (
            [ID] => 6
            [user_login] => user6
        )
    [2] => stdClass Object
        (
            [ID] => 8
            [user_login] => user8
        )
)

我想"排序"第二个数组,使其按此顺序排列,它与第一个数组(8,1,6)中的值的顺序相匹配.所以它看起来像这样:

Array
(
    [0] => stdClass Object
        (
            [ID] => 8
            [user_login] => user8
        )
    [1] => stdClass Object
        (
            [ID] => 1
            [user_login] => user1
        )
    [2] => stdClass Object
        (
            [ID] => 6
            [user_login] => user6
        )
)

我在数据结构方面很弱.我怎么能这样做?:-)

在此先感谢您的帮助!

-Bob



1> Paul Dixon..:

使用usort并提供自定义比较函数,该函数使用"排序"数组中键的位置来确定排序顺序,例如:

function cmp($a, $b) 
{
   global $author_array;

   $pos1=array_search ($a->ID, $author_array);
   $pos2=array_search ($b->ID, $author_array);

   if ($pos1==$pos2)
       return 0;
   else
      return ($pos1 < $pos2 ? -1 : 1);

}


usort($user_results, "cmp");


是的,当问题是自定义排序时,谁在他们的正确思想中支持usort()解决方案?:| +1
推荐阅读
mylvfamily
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有