【问题标题】:How to iterate over an array of stdObject elements in PHP?如何迭代 PHP 中的 stdObject 元素数组?
【发布时间】:2011-04-06 03:18:14
【问题描述】:

这是我需要通过 foreach 循环访问的数据结构的 print_r() 版本:

stdClass Object
(
    [DetailedResponse] => Array
        (
            [0] => stdClass Object
                ( ...
                )

            [1] => stdClass Object
                ( 
...

现在,我如何迭代这些对象?

我能感觉到我应该做这样的事情:

$object->DetailedResponse[0];
$object->DetailedResponse[1];

但是我怎么把它放在一个 foreach 类型的循环中!!

【问题讨论】:

  • 如果您不显示您的身份var_export() ing,我们如何回答这个问题?
  • 什么是var_exported!
  • Pekka,它 var_export()-ed。查看PHP Manual,示例#2。

标签: php object foreach stdclass


【解决方案1】:

似乎该obj中有多个对象..您可能需要做更多的foreach循环.. 此代码应该为您提供该 obj 中的第一个 sessionId。

foreach ($detailedresponses as $detailedresponse) {
    foreach ($detailedresponseas as $response) {
        echo $response->sessionId;

    }
}

运行此代码以更清晰地查看 obj:
echo '<pre>'; print_r($detailsresponses); exit;

用正确的变量名替换“$detailedresponses”并将其发回此处,这样应该更容易阅读。

编辑
看看这个网址,我把我的测试数据放在那里: http://pastie.org/1130373

我重新创建了您正在获取的对象并将 cmets 放入其中,以便您了解发生了什么:)

并且,你可以得到这样的属性:

echo $object->DetailedResponse[0]->sessionId;

【讨论】:

  • 谢谢!抱歉耽搁了 - 这工作得很好!我不喜欢使用第一个 foreach,但是,它的工作原理!
【解决方案2】:

非常简单。你有一个所谓的 php 标准对象。 它可以像 php 中的任何其他对象一样通过 $object->property 语法访问

所以你可以这样迭代它: foreach($object as $property),或foreach($object as $prop_name => $prop_val) 您可以通过$object->$prop_name 访问这些属性。

【讨论】:

  • 你好,你能看看我面临的问题的具体说明吗?
【解决方案3】:

如果你想保存一个类,以便以后重复使用,你最好使用serializeunserialize()

【讨论】:

【解决方案4】:

对此有一个很好的解决方案 - 有一个包含其他 stdClase 和数组的 stdClass

function cleanEveryElement($someStdClass) {
    foreach ($someStdClass as &$property) {        
        if ($property instanceof stdClass || is_array($property)) {
            $property = cleanEveryElement($property);
        }
    else {
        // Perform some function on each element, eg:
        $property = trim($property);
        }
    }
return $someStdClass;
}

【讨论】:

    猜你喜欢
    • 2013-11-21
    • 2012-03-17
    • 2022-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-17
    • 2020-11-13
    相关资源
    最近更新 更多