Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP SimpleXML数组_multisort()类的工作_Php_Arrays_Multidimensional Array_Simplexml - Fatal编程技术网

PHP SimpleXML数组_multisort()类的工作

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

我有一个多维数组(标准的RSS票价-频道-项目-标题),我正试图按标题对其排序。我正在使用SimpleXML对象并创建一个项目数组。然后,我从items数组中创建了另一个标题数组。然后我使用array_multisort()按标题对items数组进行排序

这是一种工作。共有122项。排序将2项按顺序排列,然后80项按顺序排列,然后38项按顺序排列,然后2项按顺序排列。但我不知道为什么会把他们分成4组

XML:


救命
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);