在PHP中计算对象数量

4
我正在使用 PHP 的 arraysobjects。我已经使用它们有一段时间了,但是现在遇到了一个问题,这个问题可能有一个非常简单的解决方案。
我有一个变量 $products,它在函数调用时接收值。我想要计算变量中的对象数量,以查看其中有多少产品。我尝试了简单的count($products)count((array)$products)函数,但它们都不起作用。我知道这不是最好的计算对象数量的方法。
是否有任何方法可以计算它们的数量?
object(stdClass)#46 (3) {
  ["0"]=>
  object(stdClass)#47 (1) {
    ["productid"]=>
    string(2) "15"
  }
  ["1"]=>
  object(stdClass)#48 (1) {
    ["productid"]=>
    string(2) "16"
  }
  ["2"]=>
  object(stdClass)#48 (1) {
    ["productid"]=>
    string(2) "26"
  }
}

我需要这个返回3
object(stdClass)#20 (1) {
  ["productid"]=>
  string(2) "21"
}

我需要这个返回1

1
如果您使用对象数组而不是包含数字属性的对象,将会使您的生活变得更加轻松。您是如何生成这个结构的?您能否进行更改? - jeroen
为这些产品对象创建一个类,并让它实现可计数接口? - GordonM
4个回答

4

count函数通常用于以下几种情况:

  • 数组
  • 从实现了可计数接口的类派生的对象

标准类stdClass不属于上述两种情况。如果您想要完成您的需求,最简单/最快的方法是:

$count = count(get_object_vars($products));

这里使用了 PHP 的 get_object_vars 函数,它会将一个对象的属性以数组形式返回。你可以使用这个数组和 PHP 的 count 函数一起使用。


1
尝试这个: $count = sizeof(get_obj_vars($products))
在此,get_obj_vars函数将$products变量转换为数组,sizeof函数计算数组大小并将其存储在变量$count中。请保留HTML标记。

1
从您的示例中,使用对象似乎是一种非常臃肿的方法。使用简单的数组会更容易和更快。
这样做:
object(stdClass)#46 (3) {
    ["0"]=>
        object(stdClass)#47 (1) {
            ["productid"]=>
              string(2) "15"
    }
}

可能只是这个:

array(0 => 15);

Or even this:

array(15);

您的示例似乎只存储产品ID,因此您不需要严格使用“productid”作为键。
您需要使用对象有什么特定原因吗?

0

您可以类似地做一些事情

count(get_object_vars($obj));

但是使用stdClass作为数组似乎有点奇怪。 你为什么要这样做?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接