stdClass(再次)

时间:2011-10-11 12:09:11

标签: php foreach stdclass

我觉得我很生气,但我想我已尽力了!

有一个像这样的对象;

    object(stdClass)#9 (8) {
  ["Results"]=>
  array(3) {
    [0]=>
    object(stdClass)#10 (5) {
      ["EmailAddress"]=>
      string(22) "38ec95a@emailtests.com"
      ["Name"]=>
      string(13) "Daniel Crabbe"
      ["Date"]=>
      string(19) "2011-07-11 13:00:00"
      ["State"]=>
      string(6) "Active"
      ["CustomFields"]=>
      array(0) {
      }
    }
    [1]=>
    object(stdClass)#11 (5) {
      ["EmailAddress"]=>
      string(12) "dan@jynk.net"
      ["Name"]=>
      string(13) "Daniel Crabbe"
      ["Date"]=>
      string(19) "2011-10-11 12:43:00"
      ["State"]=>
      string(6) "Active"
      ["CustomFields"]=>
      array(0) {
      }
    }
    [2]=>
    object(stdClass)#12 (5) {
      ["EmailAddress"]=>
      string(23) "nikolaprice@hotmail.com"
      ["Name"]=>
      string(12) "Nicola Price"
      ["Date"]=>
      string(19) "2011-08-25 16:24:00"
      ["State"]=>
      string(6) "Active"
      ["CustomFields"]=>
      array(0) {
      }
    }
  }
  ["ResultsOrderedBy"]=>
  string(5) "email"
  ["OrderDirection"]=>
  string(3) "asc"
  ["PageNumber"]=>
  int(1)
  ["PageSize"]=>
  int(150)
  ["RecordsOnThisPage"]=>
  int(3)
  ["TotalNumberOfRecords"]=>
  int(3)
  ["NumberOfPages"]=>
  int(1)
}

并尝试遍历数组(3)并获取电子邮件地址;

foreach($subscribed_result->results as $sr){
    $res++;
    echo $res.": ".$sr->EmailAddress." ".$sr['EmailAddress']." ";
}

和几个变化,但无处可去。什么是理解?

更新

这样做效果更好,可以将$ sr中的对象作为数组获取,但仍然无法获得$ sr-> emailAddress。

print $subscribed_result->response->Results[0]->EmailAddress; // works?

        foreach($subscribed_result->response->Results as $sr){
            echo $sr->EmailAdress."";   // doesn't work? 
            echo "<pre>";
            print_r($sr);
            echo "</pre>";
        }

吐出来;

stdClass Object
(
    [EmailAddress] => 38ec95a@emailtests.com
    [Name] => Daniel Crabbe
    [Date] => 2011-07-11 13:00:00
    [State] => Active
    [CustomFields] => Array
        (
        )

)

1 个答案:

答案 0 :(得分:4)

将其更改为:

foreach($subscribed_result->Results as $sr){
    $res++;
    echo $res.": ".$sr->EmailAdress;
}

请注意Results而不是resultsResults是一个对象,因此$sr['EmailAddress']无效。您只能访问此数组。 $sr->EmailAddress将打印出您想要的内容。

为了说明这一点,您可以直接访问第一个电子邮件地址:

print $subscribed_result->Results[0]->EmailAddress;