0

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

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

那有意义吗?

谢谢。

4

3 回答 3

1

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

$indices = array_flip( $second_array );
$sorted_objects = array();
foreach ( $objects as $object ) {
  $sorted_objects[$indices[$object->index]] = $object;
}
于 2012-05-11T14:48:39.260 回答
0
$objArray = ...;
$sortArray = ...;
$newArray = array(); // the sorted array

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

像这样?

于 2012-05-11T14:39:55.107 回答
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");
于 2012-05-11T14:42:21.300 回答