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

标签 php arrays object

我在 PHP 中有两个数组。第一个数组 ($author_array) 由特定顺序的 user_id 组成,如下所示:(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
        )
)

我不擅长数据结构。我怎么能这样做? :-)

提前感谢您的帮助!

-鲍勃

最佳答案

使用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");

关于php - 按特定顺序对 PHP 中的对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/355550/

相关文章:

jQuery 脚本在 Firefox 和 Internet Explorer 上返回新窗口

php - Zend_Db 子查询

c - C中多数组的存储映射函数

javascript - 使用变量引用数组中的 JSON 元素不起作用

javascript - 在数组中查找对象并更改其属性(如果我知道它的其他属性)

Javascript:嵌套对象引用的点表示法字符串

javascript - 从数组创建对象并排序

javascript - 如何从 PHP 中用 JavaScript 编写的 HTML 文本框获取值

php - 使用 php 将古吉拉特语数据从 csv 存储到 MySQL 数据库

php - 当被告知预选更多复选框时,JavaScript 函数仅选择第一个复选框