Php新秀在这里,我知道这应该很简单,但无法使其发挥作用。
我有一个xml数据(由第三方提供商发送),我想在我的网站上显示。我已经使用simplexml解析了xml。 我可以在$ xml-> Outputs-> Company。
中访问“Company”<Company>
<Name key="1">Company One</Name>
<Amount_1>20</Amount_1>
<Amount_2>25</Amount_2>
<Amount_3>30</Amount_3>
<Amount_4>40</Amount_4>
</Company>
<Company>
<Name key="2">Company Two</Name>
<Amount_1>21</Amount_1>
<Amount_2>24</Amount_2>
<Amount_3>17</Amount_3>
<Amount_4>19</Amount_4>
</Company>
我想要做的是通过“全部”金额并输出最低值。
输出最低值后,我需要连接/显示提供该值的公司名称。
示例:
“公司二”提供最低价值,报价为“17”。
谢谢。
答案 0 :(得分:0)
使用simplexml
和xpath
选择所有金额,获得最低金额,再次使用xpath
来检索公司名称:
$xml = simplexml_load_string($x); // assume XML in $x
$amounts = $xml->xpath("//*[substring(name(),1, 7) = 'Amount_']");
$min = min(array_map('intval', $amounts));
$company = $xml->xpath("//*[substring(name(),1, 7) = 'Amount_' and .='$min']/../Name")[0];
echo "$company offers the article for $min.";
输出:
Company Two offers the article for 17.
评论:
Amount_
开头的所有节点并将其填入$amounts
- &gt;顺便说一句,在XML中显示的方式使用节点名称是非常糟糕的。使用任意数量的<amount>
节点可以更容易,您可以使用xPath轻松选择这些节点,因为它们都具有相同的名称。array_map()
将$amounts
中的项目从simplexml_objects
转换为integers
min()
将最小值保存到$min
xpath
选择Company/Name
有孩子<Amount_*>
,其值为$min
echo
它。看到它有效:https://eval.in/69520