オブジェクトの配列があり、各オブジェクトにはインデックスがあります: object->index は正の整数です。
2 番目の配列があります。各エントリはインデックスであり、object->index のいずれかに一意に対応します。オブジェクトの最初の配列を並べ替えて、2 番目の配列インデックスの順序と同じ順序になるようにします。
それは理にかなっていますか?
ありがとう。
array_flip
オブジェクトの目的の位置をより簡単に検索できるように、2番目の配列()を反転します。次に、次のようにオブジェクトを反復処理できます。
$indices = array_flip( $second_array );
$sorted_objects = array();
foreach ( $objects as $object ) {
$sorted_objects[$indices[$object->index]] = $object;
}
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");
$objArray = ...;
$sortArray = ...;
$newArray = array(); // the sorted array
foreach( $sortArray as $index )
{
foreach( $objArray as $obj )
{
if( $obj->index === $index )
{
$newArray[] = $obj;
break;
}
}
}
このような?