我有一个对象数组,每个对象都有一个索引:object-> index,这是一个正整数。
我有第二个数组,每个条目都是一个索引,唯一对应于object-> index之一。我想对第一个对象数组进行排序,使它们的顺序与第二个数组索引的顺序相同。
这有意义吗?
感谢。
答案 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");