我有一个对象数组,每个对象都有一个索引:object->index,它是一个正整数。
我有第二个数组,每个条目都是一个索引,唯一对应于 object->index 之一。我想对第一个对象数组进行排序,以便它们与第二个数组索引的顺序相同。
那有意义吗?
谢谢。
我会翻转您的第二个数组 ( array_flip
),以便您可以更轻松地查找对象的所需位置。然后你可以像这样遍历你的对象:
$indices = array_flip( $second_array );
$sorted_objects = array();
foreach ( $objects as $object ) {
$sorted_objects[$indices[$object->index]] = $object;
}
$objArray = ...;
$sortArray = ...;
$newArray = array(); // the sorted array
foreach( $sortArray as $index )
{
foreach( $objArray as $obj )
{
if( $obj->index === $index )
{
$newArray[] = $obj;
break;
}
}
}
像这样?
查看 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");