【问题标题】:PHP: Count stdClass objects within arrayPHP:计算数组中的stdClass对象
【发布时间】:2017-10-25 15:27:14
【问题描述】:

我有一个包含 stdClass 对象的数组,如下所示。我如何计算 Interviewee_Name 名下有多少?

尝试像我会做一个数组一样计数,但由于 stdClass 对象而得到一个我不能的错误,然后不确定如何从那里继续

Array
(
    [0] => stdClass Object
        (
            [Interviewee_Name] => Array
                (
                    [0] => stdClass Object
                        (
                            [id] => rn_Interviewee_Name_DIR_27
                            [value] => Janusz Jasinski
                        )

                )

        )

【问题讨论】:

  • 你能展示你试图做什么吗?您应该能够计算任何数组,无论它包含什么。

标签: php arrays stdclass


【解决方案1】:

这将获得Interviewee_Name 下的元素数量,但它会计算所有元素,而不仅仅是对象。

count($arr[0]->Interviewee_Name)

但是,如果您真的只想获取Interviewee_Name 中的对象,则需要array_filter 数组以仅获取对象,然后计算该新数组:

count(array_filter($arr[0]->Interviewee_Name, function ($el) {
    return (gettype($el) == 'object');
}));

从数组中获取元素的语法类似于 $arr['index'],但在这种情况下,Interviewee_Name 是对象的属性,因此您需要使用对象语法:$obj->prop

【讨论】:

  • 所以如果我想获得价值,我会做$arr[0]->Interviewee_Name[0]->value吗?
  • @pee2pee 什么不行,第二块代码过滤非对象,还是你的代码获取值?
  • 忽略我 - 使用 $arr 但我将其更改为 $a :-)
【解决方案2】:
$array = json_decode(json_encode($formData), True);

我在进行计数之前将其添加到了,它确实有效!

【讨论】:

  • 是的,第二个参数表示json_decode 会将$formData 转换为关联数组而不是对象,但是,如果您只需更改获取@ 的方式,就可以避免这种不必要的开销987654324@
猜你喜欢
  • 2014-02-28
  • 2012-05-28
  • 2014-10-17
  • 2012-11-02
  • 2016-02-04
  • 2016-07-09
  • 1970-01-01
  • 2012-01-07
  • 2011-11-08
相关资源
最近更新 更多