我有一个对象数组,每个对象都有一个索引:object-> index,它是一个正整数。如何通过每个对象内的索引对对象数组进行排序?
我有第二个数组,每个条目都是一个索引,唯一对应于object-> index之一。我想排序对象的第一个数组,以便它们与第二个数组索引的顺序相同。
这有道理吗?
谢谢。
我有一个对象数组,每个对象都有一个索引: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");
显示一些代码 –
的,所以你有一个数组(“1” =>对象 - >索引{= 1},“2” =>对象 - > index {= 2}),{}内的内容是您的索引值。你有第二个结构相同的数组,你想排序一个数组与另一个数组的顺序相同吗? – Churk