我有以下XML文档:
<?xml version="1.0" encoding="utf-8"?>
<entries>
<entry>
<name>Test</name>
<ext>2</ext>
</entry>
<entry>
<name>Test 2</name>
<ext>1</ext>
</entry>
</entries>
我用
解析它$xml_data = simplexml_load_file("doc.xml");
然后我想对数据结构的条目(entry-Elements)进行排序:
function sort($key, $dir, $type)
{
$srt = create_function('$e1,$e2', '
$type = "' . $type . '";
$dir = "' . $dir . '";
$key = "' . $key . '";
if($type == "text")
return strcmp($e1->$key, $e2->$key);
else if($type == "int")
{
if((int) $e1->$key == (int) $e2->$key)
return 0;
else
return ((int) $e1->$key < (int) $e2->$key) ? -1 : 1;
}
else
{
error_log("Unknown sort type!", 0);
return 0;
}
');
usort($xml_data->entry, $srt);
}
示例调用如下:
sort('name', 'ASC', 'text'); // sort order not implemented yet
但它不起作用,因为数组似乎是第一个条目而不是条目数组。 所以我看起来像是什么原因:
printr($xml_data);
表示:
SimpleXMLElement Object
(
[entry] => Array
(
[0] => SimpleXMLElement Object
(
[name] => Test
[ext] => 2
)
[1] => SimpleXMLElement Object
(
[name] => Test 2
[ext] => 1
)
)
)
问题是:我如何调用usort。
usort($xml_data->entry, $srt);
似乎是错误的,但是我对printr-Result的解释。
任何人都可以为我的问题提供一个提示或解决方案吗?
谢谢!
答案 0 :(得分:0)
您无法对现有实例中的simplexml元素进行排序。但是,您可以删除所有这些内容,然后按顺序添加它们。