PHP,排序对象数组并按对象字段删除

时间:2014-02-27 19:20:56

标签: php arrays

我看过这篇文章PHP, sort array of objects by object fields,它对我很有用,但我需要更进一步的帮助。

此处为代码示例

 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)命令执行此操作?

2 个答案:

答案 0 :(得分: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;
});

答案 1 :(得分:0)

您无法使用usort()从正在排序的阵列中删除成员。您最好的选择是首先使用array_filter()删除计数大于450的对象,然后对结果进行排序。