加入来自不同SOAP方法的数据

时间:2016-02-16 18:29:15

标签: php loops join soap

我从几种SOAP方法中获取数据。使用simplexml_load_string(),我可以获取特定数据,使用foreach循环,我可以显示该方法的值。

这是我的代码的一部分,用于两种方法的结果:

foreach($sxml1->NewDataSet->HotelFacility as $item) {   
    echo '<div class="hotel">'; 
    echo '<div class="name">' . $item->FacName . '</div>';
    echo '</div>';
}
foreach($sxml2->NewDataSet->HotelPresentation as $item) {   
    echo '<div class="hotel">'; 
    echo '<div class="desc">' . $item->PresText . '</div>';
    echo '</div>';
}

如何将这些值加入到一个主要的酒店div HTML结构中,如下所示:

<div class="hotel">
   <div class="name">the_value_from_the_first_method</div>
   <div class="desc">the_value_from_the_second_method</div>
</div>

<div class="hotel">
   <div class="name">the_value_from_the_first_method</div>
   <div class="desc">the_value_from_the_second_method</div>
</div>

<div class="hotel">
   <div class="name">the_value_from_the_first_method</div>
   <div class="desc">the_value_from_the_second_method</div>
</div>...

注意:div的数量将作为SOAP方法的结果动态显示,因此必须从foreach循环生成结果。

1 个答案:

答案 0 :(得分:2)

要合并来自单独simpleXMLelement个对象的值(具有array_map函数的解决方案):

$sxml1 = simplexml_load_string($xml1);
$sxml2 = simplexml_load_string($xml2);

$hotelFac = $hotelPres = [];
foreach($sxml1->NewDataSet->HotelFacility as $item) {
    $hotelFac[] = '<div class="hotel"><div class="name">' . $item->FacName . '</div>';
}
foreach($sxml2->NewDataSet->HotelPresentation as $item) {
    $hotelPres[] = '<div class="desc">' . $item->PresText . '</div></div>';
}

$result = array_map(function($name, $desc){
    return $name . $desc;
}, $hotelFac, $hotelPres);

echo implode('', $result);

http://php.net/manual/en/function.array-map.php