2018-01-03 19:52


  • xpath
  • xml
  • php

I have an xml file that is constructed like this

<listing ItemID="12345679" SKU="ABC123" Price="99.99" />

I have a for loop inside a foreach loop

for ($i = 0; $i < $itemidcount; $i++) {
    $xpath = $xml->xpath('/sitename/listing[@ItemID=' . '"' . $itemid[$i] .'"' . ']');
    $prices[] = (string)$xpath[0]->attributes()->Price;

My issue is, if the ItemID attribute does not exist in the for loop, it outputs an error and stops my script.

Notice: Undefined offset: 0 in /home/sitename/public_html/feeds/script.php on line 137

Fatal error: Uncaught Error: Call to a member function attributes() on null in /home/sitename/public_html/feeds/script.php:137 Stack trace: #0 {main} thrown in /home/sitename/public_html/feeds/script.php on line 137

I've tried doing a count

$count = count((string)$xpath[0]->attributes()->Price);

and wrapping it in $prices[]

if ($count > 0) {
    $prices[] = (string)$xpath[0]->attributes()->Price;

But the same error occurs.

How can I create an if that will skip over the $prices[] line if the ItemID Attribute is not found?

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享