【问题标题】:PHP count object property occurrencesPHP 计数对象属性出现次数
【发布时间】:2011-06-09 09:55:33
【问题描述】:

我有一个像下面这样的 PHP 对象,我只想知道获取属性“typeId”= 3 的对象计数的最简单方法是什么

Array
(
    [0] => ABC Object
        (
            [id] => 13
            [typeId] => 3
            [sortOrder] => 0
        )
    [1] => ABC Object
        (
            [id] => 12
            [typeId] => 2
            [sortOrder] => 0
        )
    [2] => ABC Object
        (
            [id] => 14
            [typeId] => 4
            [sortOrder] => 0
        )
    [3] => ABC Object
        (
            [id] => 15
            [typeId] => 3
            [sortOrder] => 0
        )
)

【问题讨论】:

    标签: php arrays object count


    【解决方案1】:

    一个简单的foreach 计数器应该可以:

    $count = 0;
    foreach ($array as $object) {
        if ($object->typeId == 3) $count++;
    }
    

    不需要把事情搞得太复杂

    【讨论】:

    • 直截了当,我想我应该花更多的时间尝试自己解决它。当你知道怎么做的时候就这么简单。谢谢 =)
    • 天哪,我正在看着我的这个老问题,现在想知道我到底怎么不知道该怎么做。我想在过去的 1.5 年里,我学到了很多东西,无法想象我再问这么简单的事情了,呵呵
    • @SubstanceD 我们都有这样的时刻
    【解决方案2】:

    在我看来,更好的解决方案是使用array_filter 函数:

    $newarray = array_filter( $old_array, function($object) { return $object->typeId == 3; } );
    

    (注意:内联函数仅在 PHP 5.3 之后有效)

    【讨论】:

    • 这比使用简单的foreach 循环慢很多
    • 怎么能慢?你做过测量吗?
    • 感谢您的回答,我确实使用了上面 Petah 中的 foreach 循环,但我不知道内联函数,所以我也学到了其他东西。不错的一个=)
    【解决方案3】:

    只需创建一个名为 objectCount 或类似名称的临时变量,循环遍历您的数组,当您找到 typeId 等于 3 的对象时,将 1 添加到 objectCount

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-05-22
      • 2022-01-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多