gpt4 book ai didi

php - 使用SimpleXML/XPath排序XML?

转载 作者:行者123 更新时间:2023-12-03 16:58:36 31 4
gpt4 key购买 nike

我有一些XML,说:

<Backgrounds>
<Background>
<Uses>14</Uses>
</Background>
<Background>
<Uses>19</Uses>
</Background>
<Background>
<Uses>3</Uses>
</Background>
</Backgrounds>


如何将XML从最低的 Uses到最高的进行排序?

也许是xpath表达式?

另外,我怎么能只检索底部的2个 Background或最近添加的2个?

最佳答案

使用SimpleXML / XPath进行排序的示例


如何将XML从最低的Uses到最高的进行排序?


要从最低到最高对元素列表进行排序,您需要创建一个由这些元素组成的数组,然后对该数组进行排序。 xpath表达式可用于获取要排序的元素数组以及对其进行排序的数据(排序键)。

将您的XML和Uses子代作为排序值,其工作方式如下:

$elements = $xml->xpath('/*/Background');
$sortKeys = $xml->xpath('/*/Background/Uses');

array_multisort($sortKeys, SORT_NUMERIC, SORT_ASC, $elements);

foreach($elements as $i => $element) {
echo $i, ' ', $element->asXML(), "\n";
}


结果是:

0 <Background>
<Uses>14</Uses>
</Background>
1 <Background>
<Uses>19</Uses>
</Background>
2 <Background>
<Uses>3</Uses>
</Background>


请参见 array_multisort()"How do I sort a multidimensional array in php"




另外,我怎么能只检索底部的2个 Background或最近添加的2个?


单独使用xpath可以做到这一点:

$bottomTwo = $xml->xpath('/*/Background[position() > count(/*/Background) - 2]');


如果最近添加的意思是最上面而不是最下面:

$topTwo = $xml->xpath('/*/Background[position() < 3]');  

关于php - 使用SimpleXML/XPath排序XML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3293257/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com