【发布时间】:2011-12-02 07:37:30
【问题描述】:
我有一个多维数组(标准 RSS 票价 - 频道 - 项目 - 标题),我正在尝试按标题对其进行排序。我正在使用SimpleXML 并从 SimpleXML 对象中创建了一个项目数组。然后我从 items 数组中制作了另一个标题数组。然后我使用 array_multisort() 按标题对 items 数组进行排序。
这是一种工作。有 122 项。该排序将 2 个项目按顺序排列,然后将 80 个项目按顺序排列,然后将 38 个项目按顺序排列,然后将 2 个项目按顺序排列。不过,我不确定为什么要将它们分成 4 组。
XML:
<channel>
<item>
<title>Saved To Serve</title>
<guid>http://www.moorelife.org/rss/SavedToServe.xml</guid>
<pubDate>Sun, 06 Nov 2011 11:00:00 CST</pubDate>
</item>
<item>
<title>Filled With All The Fullness Of God</title>
<guid>http://www.moorelife.org/rss/FilledWithAllTheFullnessOfGod.xml</guid>
<pubDate>Mon, 03 Oct 2011 19:00:00 CST</pubDate>
</item>
</channel>
PHP:
<?php
$items = array();
foreach($data->channel->item as $item) {
$items[] = $item;
}
$titles = array();
foreach($items as $item) {
$titles[] = $item["title"];
}
array_multisort($titles, SORT_ASC, $items);
print "<pre>\n";
print_r($items);
print "</pre>\n";
?>
在 xml 文件中,Saved To Serve 就在 Filled With All The Fullness Of God 之前(就像示例一样)。排序时,FWATFOG 应该是 STS 之前的 50 项左右。在实际输出中,STS 为#2,FWATFOG 为#86(在第 3 个字母分组中)。
我的最终目标是能够拥有按标题或日期排序的链接(最好使用 AJAX,这样我们就不必处理页面重新加载)。大家有什么想法或建议吗?
JJ
【问题讨论】:
-
显然,这里还有其他事情在起作用。我尝试做 SORT_DESC 以及创建其他数组 (
$pubDates[] = $item["pubDate"];) 并且所有内容都以相同的顺序输出。它输出不同的唯一时间是如果我输入了错误的值,它会按照 xml 的方式进行排序。
标签: php arrays multidimensional-array simplexml