我从几种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循环生成结果。
答案 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);