【问题标题】:PHP Combine 4 SimpleXMLElement objects to 1 in foreach loopPHP在foreach循环中将4个SimpleXMLElement对象合并为1
【发布时间】:2018-10-26 04:30:28
【问题描述】:

我有 4 个 SimpleXMLElement 对象从 foreach 循环中获取输出?

在输出到 xml 之前,我需要将 4 个对象组合成 1 个对象。这就是我所坚持的。

$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-&gt;asXml()循环外,可以添加我的父节点。

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

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

我怎样才能将这 4 个对象合并为 1 个而不需要再循环来实现它?

【问题讨论】:

    标签: php xml simplexml


    【解决方案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-&gt;asXML(); 并连接到一个变量。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多