Неверный аргумент PHP для foreach () с объектом (SimpleXMLElement) - PullRequest
0 голосов
/ 04 сентября 2018

После некоторых вопросов я изменил свой код следующим образом, но он не работает:

$xml = simplexml_load_string($content) or die("Error: Cannot create object");
#var_dump($xml);
#exit;
if(!empty($xml)) {
    foreach($xml->answer->result as $result) {
        if (!empty($result)) {
            foreach($result->attributes() as $a => $b) {
                echo $a,'="',$b,"\"\n";
            }
        }
    }
}

Обратите внимание, что если I exit после первого цикла foreach я получу желаемые результаты, это означает, что действительно есть что-то не так с пустым элементом. Это xml для разбора:

<response>
    <method>keyword.domain.seo</method>
    <answer>
        <result kw="moos im garten" position="47" competition="0" traffic="20" url="https://www.example.org"/>
        <result kw="moos entfernen" position="75" competition="39" traffic="30" url="https://www.example.org"/>
    </answer>
    <date>2018-09-03T15:56:07+02:00</date>
    <credits used="2"/>
</response>

Есть идеи о том, что я могу сделать?

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Это решило мою проблему, я уверен, что это не лучшее решение, но, по крайней мере, оно работает:

$xml=simplexml_load_string($content) or die("Error: Cannot create object");
$results = $xml->answer->result;
if(!empty($results))
{
 foreach($results as $result)
 {
   if (!empty($result))
  {
    foreach($result->attributes() as $a => $b)
    {
     echo $a,'="',$b,"\"\n";
    }
  }
}
}
0 голосов
/ 04 сентября 2018
This should work

$content=<<<XML
<response>
<method>keyword.domain.seosssssss</method>
<answer>
<result kw="moos entfernen" position="74" competition="39" traffic="30" url="https://www.gartenbau.org/moos-entfernen-201816621"/>
<result kw="moosentfernundddddddddddddddg" position="93" competition="52" traffic="20" url="https://www.gartenbau.org/moos-entfernen-201816621"/>
</answer>
<date>2018-08-27T15:13:04+02:00</date>
<credits used="2"/>
</response>  
XML;
        $xml=simplexml_load_string($content) or die("Error: Cannot create object");
        #var_dump($xml);
        #exit;
        if(!empty($xml))
        {
            foreach($xml->answer->result as $result)
            {
                if (!empty($result))
                {
                    foreach($result->attributes() as $a => $b)
                    {
                        echo $a,'="',$b,"\"\n";
                    }
                }
            }
        }
...