用PHP计算对象

时间:2018-01-03 08:21:15

标签: php arrays count

我正在使用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

4 个答案:

答案 0 :(得分:4)

计数功能用于

阵列 从实现可数接口的类派生的对象 stdClass既不是这些。完成你所追求的更简单/最快捷的方法是

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

这使用PHP的get_object_vars函数,该函数将对象的属性作为数组返回。然后,您可以将此数组与PHP的计数功能一起使用。

答案 1 :(得分:0)

您可以执行与

类似的操作
count(get_object_vars($obj));

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

答案 2 :(得分:0)

试试这个: $ count = sizeof(get_obj_vars($ products))

此处user.time=loginDetailsAfterSaving.time;函数将user['time']=loginDetailsAfterSaving.time;变量转换为数组,user.toJSON().time=loginDetailsAfterSaving.time;函数计算数组的大小并将其存储到变量 let jwtHelper=new JwtHelper(); let userDetails= jwtHelper.decodeToken(localStorage.getItem("token")); console.log(userDetails);

答案 3 :(得分:0)

从您的示例中,为此使用对象似乎是一种非常臃肿的方法。使用简单的数组会更容易,更快。

此:

object(stdClass)#46 (3) {
    ["0"]=>
        object(stdClass)#47 (1) {
            ["productid"]=>
              string(2) "15"
    }
}

可能就是这样:

array(0 => 15);

甚至这个:

array(15);

您的示例似乎只是存储了产品ID,因此您不需要严格需要“productid”的密钥

您是否需要使用对象?