0

I know this is probably a misunderstanding in syntax and I'm sure it is because I am working with Java and C++ right now on top of PHP, but nonetheless I would really appreciate some guidance. This is in PHP.

This works,

$entry;
foreach($this->channel as $i){
    $entry = $i;
    break;
}
echo $entry->title();

This does not,

echo $this->channel[0]->title();

Appreciate the help.

As per, "zerkms" remarks,

object(Zend_Feed_Rss)#43 (9) {
  ["_entryClassName":protected] => string(19) "Zend_Feed_Entry_Rss"
  ["_entryElementName":protected] => string(4) "item"
  ["_defaultNamespace":protected] => string(3) "rss"
  ["_entryIndex":protected] => int(0)
  ["_entries":protected] => array(1) {
    [0] => object(DOMElement)#63 (17) {
      ["tagName"] => string(4) "item"
      ["schemaTypeInfo"] => NULL
      ["nodeName"] => string(4) "item"
      ["nodeValue"] => string(1058) "tag:blogger.com,1999:blog-7914458791192620477.post-6083787759488123555Fri, 07 Mar 2014 02:03:00 +00002014-03-06T18:03:27.296-08:00Test Title: tamuHack<strong style="font-family: Arial, Helvetica, sans; font-size: 11px; line-height: 14px; text-align: justify;">Lorem Ipsum</strong><span style="font-family: Arial, Helvetica, sans; font-size: 11px; line-height: 14px; text-align: justify;">&nbsp;is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</span>http://tamuhack.blogspot.com/2014/03/test-title-tamuhack.htmlnoreply@blogger.com (Robert Timm)0"
      ["nodeType"] => int(1)
      ["parentNode"] => string(22) "(object value omitted)"
      ["childNodes"] => string(22) "(object value omitted)"
      ["firstChild"] => string(22) "(object value omitted)"
      ["lastChild"] => string(22) "(object value omitted)"
      ["previousSibling"] => string(22) "(object value omitted)"
      ["attributes"] => string(22) "(object value omitted)"
      ["ownerDocument"] => string(22) "(object value omitted)"
      ["namespaceURI"] => NULL
      ["prefix"] => string(0) ""
      ["localName"] => string(4) "item"
      ["baseURI"] => string(44) "/Users/bob/School/tamu_hack/src/public_html/"
      ["textContent"] => string(1058) "tag:blogger.com,1999:blog-7914458791192620477.post-6083787759488123555Fri, 07 Mar 2014 02:03:00 +00002014-03-06T18:03:27.296-08:00Test Title: tamuHack<strong style="font-family: Arial, Helvetica, sans; font-size: 11px; line-height: 14px; text-align: justify;">Lorem Ipsum</strong><span style="font-family: Arial, Helvetica, sans; font-size: 11px; line-height: 14px; text-align: justify;">&nbsp;is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</span>http://tamuhack.blogspot.com/2014/03/test-title-tamuhack.htmlnoreply@blogger.com (Robert Timm)0"
    }
  }
  ["_element":protected] => object(DOMElement)#62 (17) {
    ["tagName"] => string(7) "channel"
    ["schemaTypeInfo"] => NULL
    ["nodeName"] => string(7) "channel"
    ["nodeValue"] => string(1215) "tag:blogger.com,1999:blog-7914458791192620477Fri, 07 Mar 2014 02:03:27 +0000tamuHackhttp://tamuhack.blogspot.com/noreply@blogger.com (Robert Timm)Blogger1125tag:blogger.com,1999:blog-7914458791192620477.post-6083787759488123555Fri, 07 Mar 2014 02:03:00 +00002014-03-06T18:03:27.296-08:00Test Title: tamuHack<strong style="font-family: Arial, Helvetica, sans; font-size: 11px; line-height: 14px; text-align: justify;">Lorem Ipsum</strong><span style="font-family: Arial, Helvetica, sans; font-size: 11px; line-height: 14px; text-align: justify;">&nbsp;is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</span>http://tamuhack.blogspot.com/2014/03/test-title-tamuhack.htmlnoreply@blogger.com (Robert Timm)0"
    ["nodeType"] => int(1)
    ["parentNode"] => string(22) "(object value omitted)"
    ["childNodes"] => string(22) "(object value omitted)"
    ["firstChild"] => string(22) "(object value omitted)"
    ["lastChild"] => string(22) "(object value omitted)"
    ["previousSibling"] => NULL
    ["attributes"] => string(22) "(object value omitted)"
    ["ownerDocument"] => string(22) "(object value omitted)"
    ["namespaceURI"] => NULL
    ["prefix"] => string(0) ""
    ["localName"] => string(7) "channel"
    ["baseURI"] => string(44) "/Users/bob/School/tamu_hack/src/public_html/"
    ["textContent"] => string(1215) "tag:blogger.com,1999:blog-7914458791192620477Fri, 07 Mar 2014 02:03:27 +0000tamuHackhttp://tamuhack.blogspot.com/noreply@blogger.com (Robert Timm)Blogger1125tag:blogger.com,1999:blog-7914458791192620477.post-6083787759488123555Fri, 07 Mar 2014 02:03:00 +00002014-03-06T18:03:27.296-08:00Test Title: tamuHack<strong style="font-family: Arial, Helvetica, sans; font-size: 11px; line-height: 14px; text-align: justify;">Lorem Ipsum</strong><span style="font-family: Arial, Helvetica, sans; font-size: 11px; line-height: 14px; text-align: justify;">&nbsp;is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.</span>http://tamuhack.blogspot.com/2014/03/test-title-tamuhack.htmlnoreply@blogger.com (Robert Timm)0"
  }
  ["_encoding":protected] => string(5) "UTF-8"
  ["_parentElement":protected] => NULL
  ["_appended":protected] => bool(true)
}
BajaBob
  • 2,643
  • 3
  • 24
  • 26
  • 2
    "foreach works, key does not, PHP" --- that's a haiku – zerkms Mar 07 '14 at 03:08
  • 1
    Now seriously: `var_dump($this->channel);` - check the structure, it doesn't have to be an indexed array PS: `$entry;` <--- in php it makes no sense – zerkms Mar 07 '14 at 03:09
  • Edited with a debug of the variable "channel". Also, would you mind being a little more clear in terms of "it makes no sense?" @zerkms? I am assuming there is a variable scope in this case hence its declaration. – BajaBob Mar 07 '14 at 03:20
  • in php there is no variable definition as you have in java and c++. You can only initialize it with the value. – zerkms Mar 07 '14 at 03:23

1 Answers1

1

As soon as it's a Zend_Feed_Rss instance and as soon as you want to get the first item's title you may do it using:

$entry = $this->channel->current();

$this->channel is not array (and doesn't implement ArrayAccess interface) - so you cannot use [] to retrieve it's items.

But it implements an iterator interface, so you can use current() (which presumably initially points to the first element).

PS: OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOPS. It does implement ArrayAccess so $this->channel[0] should work.

What would var_dump($this->channel[0]); output?

zerkms
  • 249,484
  • 69
  • 436
  • 539