2014-03-13 35 views
0

我有一個包含多個值的對象數組。值設置正確,並且該數組內的數據也按照對象的順序以正確的方式顯示。對數組中的對象進行排序

我現在想要ii,訂單被改變。在這個特殊的例子中,根據對象的'Point'值,所以具有最高Pointvalue的對象是第一個等等...

我試圖做的是找到具有最高值的對象,將它推入數組並取消原始值。而array_slice在最後得到相關的數組元素。

我也成功的在第一部分,但問題是我一直找到相同的對象,所以我不知道怎麼不把它從數組中刪除。

$max = $obj[0]; 
    for ($j =0; $j<count($obj)-$j; $j++) { 
     for ($i=0; $i<count($names); $i++) { 
      if ($max->Point < $obj[$i+1]->Point) { 
       $max = $obj[$i+1]; 
      } 
     } 
     if ($max->id == $obj[$j]->id) { 
      unset($obj[$j]); 
     } 
     array_push($obj, $max); 
    } 

我不知道,你可以通過代碼看到和我想要做的,但希望有人能和任何顯示我的錯誤(S),或顯示其他的方式來完成相同的?

+0

關於http://stackoverflow.com/search?q=[php]+usort+object以及例如[在PHP中使用usort排序對象數組?](http://stackoverflow.com/questions/2286597/using-usort-in-php-to-sort-an-array-of-objects)? – Christoph

回答

1

嘗試使用usort() function。它允許您根據您定義的比較函數對數組進行排序。

function lower_points($a, $b) { 
    if ($a->Point == $b->Point) return 0; 
    else if ($a->Point > $b->Point) return -1; 
    else return 1; 
} 

usort($array_of_objects, lower_points); 
+0

答案很短。您應該擴展它,或者將其作爲註釋。 – CBroe

+0

也許持續30秒左右? –

+2

嗯,也許首先寫一個完整的答案,而不是僅僅提交它爲「第一個」......? ;-) – CBroe

相關問題