PHP объединяет 4 объекта SimpleXMLElement в 1 в цикле foreach - PullRequest
0 голосов
/ 26 октября 2018

У меня есть 4 объекта SimpleXMLElement, которые получают вывод из цикла foreach?

Мне нужно объединить 4 объекта в 1 объект перед выводом в xml.Это то, на чем я застрял.

<code>$auth_tokens = array('tok1', 'tok2', 'tok3', 'tok4');

foreach($auth_tokens as $auth_token) { // 4 iterations in loop
    $response = curl_exec($connection); // API xml response
    $xml = simplexml_load_string($response); // loaded xml into object


$entries = $xml->PaginationResult->TotalNumberOfEntries;
$xml = $xml->OrderArray->Order; // Only want this section of each object

if($entries == 0) {
    continue;
}

echo '<pre>' . var_export($xml, true) . '

';}

Вывод: сжатая версия объектов

SimpleXMLElement::__set_state(array(
   'OrderID' => '1118',
));


SimpleXMLElement::__set_state(array(
   'OrderID' => '3916',
));


SimpleXMLElement::__set_state(array(
   'OrderID' => '1628',
));


SimpleXMLElement::__set_state(array(
   'OrderID' => '3724',
));

После объединения 4 объектов я echo $xml->asXml() выйду из цикла и смогудобавьте мой родительский узел.

foreach($auth_tokens as $auth_token) {
    // ....
}

$xml = simplexml_load_string("<Orders>$xml</Orders>");
header('content-type: text/xml');
echo $xml->asXML();

Как я могу объединить эти 4 объекта в 1 и больше не делать циклов, чтобы это произошло?

1 Ответ

0 голосов
/ 27 октября 2018

Очень простой способ сделать это - экспортировать каждый кусок XML и добавить его в строку ($orders) внутри цикла, а затем добавить это к вашему последнему вызову simplexml_load_string() ...

<code>$orders = "";
foreach($auth_tokens as $auth_token) {
    // ....

    //echo '<pre>' . var_export($xml, true) . '

'; $ orders. = $ xml-> asXML (); } $ xml = simplexml_load_string (" $ orders "); заголовок ('content-type: text / xml'); echo $ xml-> asXML ();
...