0

オブジェクトの配列があり、各オブジェクトにはインデックスがあります: object->index は正の整数です。

2 番目の配列があります。各エントリはインデックスであり、object->index のいずれかに一意に対応します。オブジェクトの最初の配列を並べ替えて、2 番目の配列インデックスの順序と同じ順序になるようにします。

それは理にかなっていますか?

ありがとう。

4

3 に答える 3

1

array_flipオブジェクトの目的の位置をより簡単に検索できるように、2番目の配列()を反転します。次に、次のようにオブジェクトを反復処理できます。

$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

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 に答える
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 に答える