我有一個對象數組,每個對象都有一個索引: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