根据另一个数组中的一组值对数组进行排序

时间:2013-08-09 21:02:21

标签: php arrays

我知道SO上有another question应该回答同样的事情。我的问题是我不知道阵列合并与什么做了什么。我不想合并阵列,我不明白这有助于订购它们......我也不知道订购的位置。

如果相关,有人可以更详细地解释另一个答案对我是否有用以及如何

这就是我所拥有的(数组相当大,所以这是一个简化)

基本上我有这样的东西

  Array (
    [0] => stdClass Object (
        [term_id] => 72
        [name] => name
        [slug] => slug
        [term_group] => 0
        [term_order] => 1
        [term_taxonomy_id] => 73
        [taxonomy] => gallery_category
        [description] => description
        [parent] => 78
        [count] => 85 )
    [1] => stdClass Object (
        [term_id] => 77
        [name] => name
        [slug] => slug

        etc, etc, etc, there are a lot of objects in the array

然后我有一个像

这样的排序数组
 Array (
        [0] => 77, 
        [1] => 72,
        etc

所以我想要做的是在第一个数组上强加第二个数组的顺序 - 排序数组以正确的顺序保存第二个数组中[term_id]的值。在上面的例子中,这意味着我将颠倒前两个对象的顺序。

2 个答案:

答案 0 :(得分:3)

$order_array = [77, 72];

$order_array = array_flip($order_array);

usort($objects, function($a, $b) use ($order_array)
{
  return $order_array[$a->term_id] - $order_array[$b->term_id];
});

这假设$order_array每个term_id都有一个条目。

答案 1 :(得分:0)

uksort可以做到。

function cmp($a, $b)
{
    $ordering_array=array(0=>77, 1=>72);
    return $ordering_array[$a] - $ordering_array[$b];
}

$a = array() #etc...

uksort($a, "cmp");