如何通过每个对象内的索引对对象数组进行排序?

时间:2012-05-11 14:30:39

标签: php arrays

我有一个对象数组,每个对象都有一个索引:object-> index,这是一个正整数。

我有第二个数组,每个条目都是一个索引,唯一对应于object-> index之一。我想对第一个对象数组进行排序,使它们的顺序与第二个数组索引的顺序相同。

这有意义吗?

感谢。

3 个答案:

答案 0 :(得分:1)

我会翻转您的第二个数组(array_flip),以便您可以更轻松地查找对象的所需位置。然后你可以像这样迭代你的对象:

$indices = array_flip( $second_array );
$sorted_objects = array();
foreach ( $objects as $object ) {
  $sorted_objects[$indices[$object->index]] = $object;
}

答案 1 :(得分:0)

$objArray = ...;
$sortArray = ...;
$newArray = array(); // the sorted array

foreach( $sortArray as $index )
{
  foreach( $objArray as $obj )
  {
    if( $obj->index === $index )
    {
      $newArray[] = $obj;
      break;
    }
  }
}
像这样?

答案 2 :(得分:0)

查看usort(http://au.php.net/manual/en/function.usort.php):这允许您通过指定函数对数组进行排序。该函数将获取对象的索引。

function cmp($obj1, $obj2) {

    if ($obj1->index == $obj2->index) {
        return 0;
    }
    return ($obj1->index < $obj2->index) ? -1 : 1;
}

usort($aObjects, "cmp");