簡體   English   中英

如何遍歷PHP中的stdObject元素數組?

[英]How to iterate over an array of stdObject elements in PHP?

這是我需要通過foreach循環訪問的數據結構的print_r()版本:

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

            [1] => stdClass Object
                ( 
...

現在,如何遍歷這些對象?

我可以感覺到我應該做這樣的事情:

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

但是我怎么把它放在foreach類型循環中呢!

似乎該obj中有多個對象。您可能需要做更多的foreach循環。此代碼應為您提供該obj中的第一個sessionId。

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

    }
}

運行以下代碼以更清晰的方式查看obj:
echo '<pre>'; print_r($detailsresponses); exit;

將“ $ detailedresponses”替換為正確的變量名稱,然后將其重新發布回此處,這樣會使內容更易於閱讀。

編輯
簽出此URL,我將測試數據放在那里: http : //pastie.org/1130373

我重新創建了您要獲取的對象,並在其中添加了注釋,以便您了解發生了什么:)

並且,您可以獲得以下屬性:

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

有一個很好的解決方案-有一個stdClass包含其他stdClases和數組

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;
}

很簡單。 您有一個所謂的php標准對象。 它可以像$object->property語法一樣訪問php中的任何其他對象

因此,您可以通過以下方式對其進行迭代: foreach($object as $property)foreach($object as $prop_name => $prop_val) ,您可以在其中通過$object->$prop_name foreach($object as $prop_name => $prop_val)訪問屬性。

如果要保存一個類,以便以后再使用,則最好使用serializeunserialize()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM