0

这是我的代码,它显示了我所追求的结果,但是否可以按顺序列出它们或

    $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 的顺序而不是按时间显示。

我可以包含一行代码来按日期变量对结果进行排序吗?

4

3 回答 3

0

PHP具有非常有用的排序功能,可以定义用户比较功能。见链接:http ://www.php.net/manual/en/function.uasort.php

于 2013-04-04T16:07:50.417 回答
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函数(以及所有其他数组排序函数)不会进一步帮助您。幸运的是,这已经被概述了,您可以将迭代转换为数组:

$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.
于 2013-04-05T23:18:42.777 回答
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);

不过,这只会返回一个结果,我想我在某些地方出错了?

于 2013-04-09T09:08:16.973 回答