2016-07-07 121 views
-1

如何在PHP中按降序排列[sequence_number]以下數組?如何通過stdClass對象內的通用元素對stdClass對象的數組進行排序?

Array 
(
    [0] => stdClass Object 
     (
      [debate_id] => 1 
      [stakeholder_id] => 1 
      [sequence_number] => 1 
      [title] => SLIDE 1 - STAKEHOLDER 1 
      [content] => This is the first slide for STAKEHOLDER 1 
     ) 

    [1] => stdClass Object 
     (
      [debate_id] => 1 
      [stakeholder_id] => 1 
      [sequence_number] => 4 
      [title] => SLIDE 2 - STAKEHOLDER 1 
      [content] => This is the second slide for STAKEHOLDER 1 
     ) 

    [2] => stdClass Object 
     (
      [debate_id] => 1 
      [stakeholder_id] => 1 
      [sequence_number] => 3 
      [title] => SLIDE 3 - STAKEHOLDER 1 
      [content] => This is the third slide for STAKEHOLDER 1 
     ) 

) 

回答

2

您可以使用usort,這裏是你如何爲你的例子做:

function compare_func($a, $b) 
{ 
    if ($a->sequence_number == $b->sequence_number) { 
     return 0; 
    } 
    return ($a->sequence_number < $b->sequence_number) ? -1 : 1; 
    // You can apply your own sorting logic here. 
} 

usort($arrayOfObjects, "compare_func"); 

usort()功能排序的數組的值使用用戶提供的比較函數。

在我們的案例中compare_func是我們用戶提供的功能。


如果你想通過價值排序的數組,你可以使用strcmp()函數用戶提供的函數裏面。與此類似,

return strcmp($a["title"], $b["title"]); 

參考:http://php.net/manual/en/function.usort.php

1

試試這個:

usort($array, function($obj1, $obj2) { 
    return $obj2->sequence_number - $obj1->sequence_number; 
});