stdClass Object
(
    [date] => Wed, 4 Feb 2009 22:37:42 +1300
    [Date] => Wed, 4 Feb 2009 22:37:42 +1300
    [subject] => Fwd: another test
    [Subject] => Fwd: another test
    [in_reply_to] => <59f89e00902040137vb73ed1ep5f870dafe02f26cf@mail.example.com>
    [message_id] => <59f89e00902040137s16c317b6oa4658a4d2cc64c3c@mail.example.com>
    [references] => <59f89e00902040137vb73ed1ep5f870dafe02f26cf@mail.example.com>
    [toaddress] => john@example.com
    [to] => Array
        (
            [0] => stdClass Object
                (
                    [mailbox] => john
                    [host] => example.com
                )

    )

[fromaddress] => Chris Hope 
[from] => Array
    (
        [0] => stdClass Object
            (
                [personal] => Chris Hope
                [mailbox] => chris
                [host] => example.com
            )

    )

[reply_toaddress] => Chris Hope 
[reply_to] => Array
    (
        [0] => stdClass Object
            (
                [personal] => Chris Hope
                [mailbox] => chris
                [host] => example.com
            )

    )

[senderaddress] => Chris Hope 
[sender] => Array
    (
        [0] => stdClass Object
            (
                [personal] => Chris Hope
                [mailbox] => chris
                [host] => example.com
            )

    )

[Recent] => N
[Unseen] =>  
[Flagged] =>  
[Answered] =>  
[Deleted] =>  
[Draft] =>  
[Msgno] =>   20
[MailDate] =>  4-Feb-2009 22:37:42 +1300
[Size] => 3111
[udate] => 1233740262
)

This is my print_r($from); response how to do I print the "From" "Personal" part of this array to it would read "Chris Hope"??

    Those are all basically member variables of a class, so you can access it via standard [man]oop[/man] methods; $from->from[0]->personal should do the trick.

      Cheers, what about a loop for each item in a array

          [0] => stdClass Object
              (
                  [personal] => 2GB SPORT
                  [mailbox] => sport
                  [host] => 2gb.com
              )
      
      [1] => stdClass Object
          (
              [personal] => AAP
              [mailbox] => jancetics
              [host] => aap.com.au
          )
      
      [2] => stdClass Object
          (
              [personal] => Adam Hamilton
              [mailbox] => hamiltona
              [host] => heraldsun.com.au
          )
      

      How do i do this?

        Looks like just a standard array, so just use [man]foreach/man on the array variable.

          echo "<To><![CDATA[";
          foreach ($to as $i => $value) {
          echo " " $to[0]->mailbox . "@" . $to[0]->host . ";";
          }
          echo "]]></To>";
          

          This does not work though?

            Well... that's because you didn't exactly use [man]foreach/man correctly. First, are you sure $to is the variable that contains the array you showed above? If so, then you'd do something like:

            foreach($to as $data) {
                // $data is now a stdClass Object
            }
              echo "<To><![CDATA[";
              foreach ($to as $data) {
              echo " " $data[0]->mailbox . "@" . $data[0]->host . ";";
              }
              echo "]]></To>";
              

              Parse error: syntax error, unexpected T_VARIABLE, expecting ',' or ';' in /home/xuser/public_html/mypage.php on line 61

              I know what this error is saying but can not see the issue?

                Missing a period between the first string piece and the first variable.

                Also, why did you use $data[0]? If $to is the array you showed above, then $data won't be an array - it's just an object.

                  Sorry I worked it out

                  echo "<To><![CDATA[";
                  foreach ($to as $data) {
                  echo " " . $to[0]->mailbox . "@" . $to[0]->host . ";";
                  }
                  echo "]]></To>";
                  
                  

                  Problem is if there is more than one it does not work, if there is just 1 (0) then it works...

                    It goes on longer than this but this is the dump

                    
                    array(173) {
                      [0]=>
                      object(stdClass)#363 (3) {
                        ["personal"]=>
                        string(9) "2GB SPORT"
                        ["mailbox"]=>
                        string(5) "sport"
                        ["host"]=>
                        string(7) "2gb.com"
                      }
                      [1]=>
                      object(stdClass)#259 (3) {
                        ["personal"]=>
                        string(3) "AAP"
                        ["mailbox"]=>
                        string(9) "jancetics"
                        ["host"]=>
                        string(10) "aap.com.au"
                      }
                      [2]=>
                      object(stdClass)#272 (3) {
                        ["personal"]=>
                        string(13) "Adam Hamilton"
                        ["mailbox"]=>
                        string(9) "hamiltona"
                        ["host"]=>
                        string(16) "heraldsun.com.au"
                      }
                      [3]=>
                      object(stdClass)#281 (3) {
                        ["personal"]=>
                        string(10) "Adam Hawse"
                        ["mailbox"]=>
                        string(6) "ahawse"
                        ["host"]=>
                        string(17) "networkten.com.au"
                      }
                    

                      Right, so go back to my example; the point of using [man]foreach[/man]($to as $data) is that the foreach() construct will place each array entry into $data after each iteration. It's basically a while() loop that loops through all array indexes one-by-one.

                      Since you still used $to inside the foreach() loop, though, you basically ignored the whole point of the foreach() statement and accessed the array directly. Instead, you should be using $data (without any array index, since $data will reference the contents of the array one-by-one, and the contents are objects).

                        So ...

                        echo "<To><![CDATA[";
                        foreach ($to as $data) {
                        //foreach ($to as $i => $value) {
                        echo " " . $data->mailbox . "@" . $data->host . ";";
                        }
                        echo "]]></To>";
                        

                          Based on the var_dump() above, yes, that seems right. Did it work?

                            Yes i did, thanks so much for your help.

                              Write a Reply...