【发布时间】:2013-03-04 14:51:34
【问题描述】:
我们正在通过他们的 API 从远程服务器获取数据。不幸的是,他们的 API 没有按日期对返回的数据进行排序。
我正在尝试弄清楚如何重新组织数据以使其按 next_bookable_date 排序,但没有取得多大成功。我们使用 PHP 和 SimpleXMLElement 来解析数据并创建一个字符串,然后将其插入网页。但当前结果与数据在返回的 XML 中出现的顺序相同。
基本的 XML 结果如下。为了节省空间,我删除了更多数据。
SimpleXMLElement Object
(
[request] => GET search.xml?start_date=2013-05-03&end_date=2013-05-17
[error] => OK
[total_tour_count] => 4
[tour] => Array
(
[0] => SimpleXMLElement Object
(
[next_bookable_date] => 2013-05-13
[tour_name] => Thailand Tour
)
[1] => SimpleXMLElement Object
(
[next_bookable_date] => 2013-05-12
[tour_name] => Bali Tour
)
[2] => SimpleXMLElement Object
(
[next_bookable_date] => 2013-05-05
[tour_name] => Hawaii Tour
)
[3] => SimpleXMLElement Object
(
[next_bookable_date] => 2013-05-06
[tour_name] => Bhutan Tour
)
)
)
我们用来生成 html 字符串的 PHP 代码(再次剥离了一些 html 代码以节省空间):
foreach($result->tour as $tour) {
$tourname = $tour->tour_name;
$tourdate = $tour->next_bookable_date;
// create string for dpt-soon
$dpt_soon_list .= "<li> some html using the above values </li>\n";
}
有没有办法在我们从远程服务器接收到 XML 数据后重新排序?或者有没有办法在运行 foreach 时重新排序 PHP 输出?
【问题讨论】:
-
如果你是做纯xml->输出,那么用simplexml把相关数据拉出来,放到一个标准的PHP数组中,然后用php.net/usort对该数组进行排序当然可以也可以使用 xslt 做一个直接的 xml->html 转换
标签: php xml api xml-parsing