【问题标题】:Join data from different SOAP methods连接来自不同 SOAP 方法的数据
【发布时间】:2016-02-16 18:29:15
【问题描述】:

我从几个 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 循环中生成。

【问题讨论】:

标签: php loops join soap


【解决方案1】:

合并来自不同 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

【讨论】:

  • 嗨,罗曼。我已经尝试过您的解决方案,但收到一个错误:警告:array_map(): Argument #2 should be an array,它不显示任何内容。
  • $sxml1->NewDataSet->HotelFacility`不是一个对象数组吗?什么给了var_dump(gettype($sxml1-&gt;NewDataSet-&gt;HotelFacility));
  • 它给出:string(6) "object"
  • 你能告诉我var_dump(get_class($sxml1-&gt;NewDataSet-&gt;HotelFacility));吗?谢谢
  • 该功能不显示任何内容。
猜你喜欢
  • 1970-01-01
  • 2011-06-21
  • 2013-09-24
  • 2018-02-09
  • 2021-12-03
  • 2018-02-06
  • 2014-07-10
  • 1970-01-01
  • 2022-10-07
相关资源
最近更新 更多