2014-02-27 33 views
0

我看到這篇文章PHP, sort array of objects by object fields它對我很好,但我需要更進一步的幫助。PHP,排序對象數組並刪除對象字段的項目

下面的代碼示例

Array 
(
    [0] => stdClass Object 
     (
      [ID] => 1 
      [name] => Mary Jane 
      [count] => 420 
     ) 

    [1] => stdClass Object 
     (
      [ID] => 2 
      [name] => Johnny 
      [count] => 234 
     ) 

    [2] => stdClass Object 
     (
      [ID] => 3 
      [name] => Kathy 
      [count] => 4354 
     ) 

    .... 

我希望能夠刪除數組對象已經算上述450我怎麼能這樣做?所以基本上它刪除([2] => stdClass的對象)等

功能我現在用的就是這個

function cmp($a, $b) 
{ 
    return strcmp($a->name, $b->name); 
} 

usort($your_data, "cmp") 

所以,我怎麼會去這樣做? 我是否使用unset($ text)命令來執行此操作?

回答

1

您可以使用array_filter()從陣列中移除項目。

$arr = array(...); 
// sort array with your usort 
... 
// filter array to new one 
$filteredArr = array_filter($arr, function($item) { 
    return $item->count <= 450; 
}); 
0

您不能使用usort()從正在排序的數組中移除成員。您最好的選擇是首先使用array_filter()刪除計數超過450的對象,然後對結果進行排序。