PHP SimpleXML数组_multisort()类的工作
我有一个多维数组(标准的RSS票价-频道-项目-标题),我正试图按标题对其排序。我正在使用SimpleXML对象并创建一个项目数组。然后,我从items数组中创建了另一个标题数组。然后我使用array_multisort()按标题对items数组进行排序 这是一种工作。共有122项。排序将2项按顺序排列,然后80项按顺序排列,然后38项按顺序排列,然后2项按顺序排列。但我不知道为什么会把他们分成4组 XML:PHP SimpleXML数组_multisort()类的工作,php,arrays,multidimensional-array,simplexml,Php,Arrays,Multidimensional Array,Simplexml,我有一个多维数组(标准的RSS票价-频道-项目-标题),我正试图按标题对其排序。我正在使用SimpleXML对象并创建一个项目数组。然后,我从items数组中创建了另一个标题数组。然后我使用array_multisort()按标题对items数组进行排序 这是一种工作。共有122项。排序将2项按顺序排列,然后80项按顺序排列,然后38项按顺序排列,然后2项按顺序排列。但我不知道为什么会把他们分成4组 XML: 救命 http://www.moorelife.org/rss/SavedToSer
救命
http://www.moorelife.org/rss/SavedToServe.xml
2011年11月6日星期日11:00:00中央标准时间
充满了上帝的丰满
http://www.moorelife.org/rss/FilledWithAllTheFullnessOfGod.xml
2011年10月3日星期一19:00:00中央标准时间
PHP:
在xml文件中,savedtoserve就在前面充满了上帝的丰满(就像示例一样)。排序时,FWATFOG在STS之前应为50个左右的项目。在实际输出中,STS为#2,FWATFOG为#86(在第三个字母分组中)
我的最终目标是能够有按标题或日期排序的链接(最好使用AJAX,这样我们就不必处理页面重载)。你们有什么想法或建议吗
JJ您可以先直接对simplexml对象排序: $nodes=数组( 新的SimpleXMLElement(' 救命 http://www.moorelife.org/rss/SavedToServe.xml 2011年11月6日星期日11:00:00中央标准时间 '), 新的SimpleXMLElement(' 充满了上帝的丰满 http://www.moorelife.org/rss/FilledWithAllTheFullnessOfGod.xml 2011年10月3日星期一19:00:00中央标准时间 ') ); 函数xsort(&$nodes,$child\u name,$order=SORT\u ASC) { $sort_proxy=array(); foreach($k=>$node的节点) { $sort\u proxy[$k]=(字符串)$node->$child\u name; } 数组\u多排序($sort\u proxy,$order,$nodes); } xsort($nodes,'title',SORT_ASC); 打印(节点);
那对我不起作用(空白页)。值得一提的是,我使用php4使用simplexml for php4类()。我没想到要提到它,因为它不是一个问题。它似乎以同样的方式处理对象。不过,我知道它不支持xpath或通配符,所以它可能无法使用$node->$child_name或其他东西。我试着做SORT_DESC以及创建其他数组(
$pubDates[]=$item[“pubDate”];
)并且所有输出都以相同的顺序进行。它唯一不同的输出是,如果我输入了一个错误的值,并且它按照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
$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";
?>
$nodes = array(
new SimpleXMLElement('<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>
'),
new SimpleXMLElement('<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>
')
);
function xsort(&$nodes, $child_name, $order = SORT_ASC)
{
$sort_proxy = array();
foreach ($nodes as $k => $node)
{
$sort_proxy[$k] = (string) $node->$child_name;
}
array_multisort($sort_proxy, $order, $nodes);
}
xsort($nodes, 'title', SORT_ASC);
print_r($nodes);