1

我知道关于 SO 的另一个问题应该回答同样的问题。我的问题是我看不到数组合并与任何事情有什么关系。我不想合并数组,我不明白这将如何帮助对它们进行排序......我也不明白排序是从哪里进入的。

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

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

本质上我有这样的东西

  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] 的值。在上面的示例中,这意味着我将颠倒前两个对象的顺序。

4

2 回答 2

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.

于 2013-08-09T21:09:19.443 回答
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");
于 2013-08-09T21:12:13.570 回答