两个php数组 – 使用另一个数组的值排序一个数组

前端之家收集整理的这篇文章主要介绍了两个php数组 – 使用另一个数组的值排序一个数组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有两个这样的 PHP数组:

>包含ID的X记录数组
wordpress帖子(特别是
订购)
>一系列wordpress帖子

这两个数组看起来像这样:

Array One(wordpress帖子ID的排序自定义数组)

Array (  
  [0] => 54
  [1] => 10
  [2] => 4
)

数组二(wordpress Post Array)

Array ( 
    [0] => stdClass Object
        (
            [ID] => 4
            [post_author] => 1
    )
    [1] => stdClass Object
        (
            [ID] => 54
            [post_author] => 1
    )
    [2] => stdClass Object
        (
            [ID] => 10
            [post_author] => 1
    )
)

我想按照第一个数组中ID的顺序对wordpress帖子的数组进行排序.

我希望这是有道理的,并且在任何帮助之前都要感谢.

汤姆

编辑:服务器正在运行PHP 5.2.14版

这应该很容易使用 usort,它使用用户定义的比较函数对数组进行排序.结果可能如下所示:
usort($posts,function($a,$b) use ($post_ids) {
    return array_search($a->ID,$post_ids) - array_search($b->ID,$post_ids);
});

请注意,此解决方案,因为它使用anonymous functions and closures,需要PHP 5.3.

5.3之前(黑暗时代!)的一个简单解决方案是使用快速循环,然后ksort执行此操作:

$ret = array();
$post_ids = array_flip($post_ids);
foreach ($posts as $post) {
    $ret[$post_ids[$post->ID]] = $post;
}
ksort($ret);

猜你在找的PHP相关文章