PHP объединить 4 объекта SimpleXMLElement в 1 в цикле foreach

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

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

$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) . '</pre><br>';

}

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

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 объекта в один и больше не делать циклов, чтобы это произошло?

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
106
1

Ответы 1

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

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

    //echo '<pre>' . var_export($xml, true) . '</pre><br>';
    $orders .= $xml->asXML();
}

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

Благодарю. Я уже понял, что мне нужно использовать $xml->asXML(); внутри цикла и объединить его с переменной.

Mike 27.10.2018 23:23

Другие вопросы по теме