我需要帮助才能找到答案。
关于我的上一个问题,我在谈论解析XML并在html上列出值:Parse XML to HTML with PHP SimpleXMLElement
我的表现非常好,但随后出现了一个新的变量。 :)
这是我的XML:
<?xml version='1.0'?>
<AdXML>
<Response>
<Campaign>
<Overview>
<Name>strip</Name>
<Description>category</Description>
<Status>L</Status>
</Overview>
<Pages>
<Url>page01</Url>
<Url>page02</Url>
<Url>page03</Url>
</Pages>
</Campaign>
</Response>
</AdXML>
当我的XML生成页面列表random.so时,我的问题开始了,有一次它会像这样加载,而另一次它会像这样加载:
<?xml version='1.0'?>
<AdXML>
<Response>
<Campaign>
<Overview>
<Name>strip</Name>
<Description>category</Description>
<Status>L</Status>
</Overview>
<Pages>
<Url>page02</Url>
<Url>page03</Url>
<Url>page01</Url>
</Pages>
</Campaign>
</Response>
</AdXML>
所以我从一个简单的开始:
<?php foreach ($xmlparsed->Response->Campaign->Pages->Url as $Url) {echo $Url, '<br>';} ?>
为:
<?php
$urlarray = array();
foreach ($xmlparsed->Response->Campaign->Pages->Url as $Url) {$urlarray[] = $Url;}
sort($urlarray);
foreach ($urlarray as $key => $val){echo $key,'|',$val, '<br>';}
?>
我要做的是创建一个包含信息的数组,然后按字母顺序对页面进行排序。我不明白为什么我不能按值(页面)排序,我只能按键排序并且因为xml是动态生成而无法控制它的形成而打败了目的。
非常感谢你的帮助。
欢呼声
答案 0 :(得分:0)
查看PHP中的asort
和类似函数,有一些可以提供帮助。
答案 1 :(得分:0)
这是自定义排序数组的情况,在这种情况下我建议使用 usort :
对于PHP版本&gt; = 5.4:
usort($urlarray, function ($a, $b) {
if ((int)substr($a, 4, 2) > (int)substr($b, 4, 2)) return 1;
elseif ((int)substr($a, 4, 2) < (int)substr($b, 4, 2)) return -1;
else return 0;
});
对于PHP版本&lt; 5.4:
function custom_sort($a, $b) {
if ((int)substr($a, 4, 2) > (int)substr($b, 4, 2)) return 1;
elseif ((int)substr($a, 4, 2) < (int)substr($b, 4, 2)) return -1;
else return 0;
}
// then using in usort
usort($urlarray, 'custom_sort');
希望这有帮助。 的问候,
答案 2 :(得分:0)
我能够使用SORT_STRING:
来做到这一点<?php
$urlarray = array();
foreach ($xmlparsed->Response->Campaign->Pages->Url as $Url) {$urlarray[] = $Url;}
sort($urlarray, SORT_STRING);
foreach ($urlarray as $key => $val){echo $key,'|',$val, '<br>';}
?>
谢谢大家