这是我的代码,它显示了我之后的结果,但是可以按顺序列出它们或
$xml = simplexml_load_file('racing.xml');
foreach ($xml->sport[0]->event_path->event_path as $gameinfo):
$description = $gameinfo->description;
$getdate = $gameinfo->event['date'];
$event_id = $gameinfo->event['id'];
$date = substr($getdate,0,10);
代码
<?=substr($description, -5)?>
给我留下变量的时间,即:14:40,15:50:14:20:18:40等,但它们按XML的顺序而不是按时间显示。
我可以包含一行代码来按日期变量对结果进行排序吗?
答案 0 :(得分:0)
PHP具有非常有用的排序功能,能够定义用户比较功能。请参阅链接:http://www.php.net/manual/en/function.uasort.php
答案 1 :(得分:0)
首先提供一些改进代码的一般提示:
foreach ($xml->sport[0]->event_path->event_path as $gameinfo):
是个坏主意。相反,我让自己成为一个礼物并给出一个新的变量(你可以在以后感谢我):
$gameinfos = $xml->sport[0]->event_path->event_path;
foreach ($gameinfos as $gameinfo):
所以现在你要对$gameinfos
进行排序。这里的问题是那些是迭代器而不是数组。 uasort
函数(以及所有其他数组排序函数)对您没有任何帮助。幸运的是这个has been outlined already,您可以将迭代转换为数组:
$gameinfos = iterator_to_array($gameinfos, FALSE);
现在$gameinfos
是一个可以排序的数组。要做到这一点,请获取定义排序顺序的值($gameinfos
应该为其排序),我假设它是您在上面写的时间substr($description, -5)
:
$order = array();
foreach ($gameinfos as $game)
$order[] = substr($game->description, -5)
;
array_multisort($order, $gameinfos);
// $gameinfos are sorted now.
答案 2 :(得分:0)
感谢您的时间!我现在的代码为:
$xml = simplexml_load_file('racing.xml');
$gameinfos = $xml->sport[0]->event_path->event_path;
foreach ($gameinfos as $gameinfo):
$gameinfos = iterator_to_array($gameinfos, FALSE);
$order = array();
foreach ($gameinfos as $game)
$order[] = substr($game->description, -5) ;
array_multisort($order, $gameinfos);
// $gameinfos are sorted now.
$description = $gameinfo->description;
$getdate = $gameinfo->event['date'];
$event_id = $gameinfo->event['id'];
$date = substr($getdate,0,10);
这只会返回一个结果,我想我已经走错了一些沿线的地方?