按子节点对xml div排序PHP SimpleXML
因此,我有一个xml文件中的按子节点对xml div排序PHP SimpleXML,php,simplexml,Php,Simplexml,因此,我有一个xml文件中的列表。我正在使用php的simpleXML解析该文件 我可以使用以下命令生成所有div的数组: $divArray = $xmldoc->text->body->children(); 但是现在我想按div中的不同子节点(作者、标题、日期)订购$divArray div看起来像这样 <div> <bibl> <author> <title> <d
列表。我正在使用php的simpleXML解析该文件
我可以使用以下命令生成所有div的数组:
$divArray = $xmldoc->text->body->children();
但是现在我想按div中的不同子节点(作者、标题、日期)订购$divArray
div看起来像这样
<div>
<bibl>
<author>
<title>
<date>
</bibl>
</div>
那么我如何获取$divArray并按
或
或
对其排序呢
谢谢你的帮助。
jw基本程序是
simplexmlement
强制转换为数组simplexmlement
参数的比较函数usort()
$xml = <<<EOT
<root>
<text>
<body>
<div>
<bibl>
<author>A</author>
<title>A</title>
<date>1</date>
</bibl>
</div>
<div>
<bibl>
<author>B</author>
<title>B</title>
<date>2</date>
</bibl>
</div>
<div>
<bibl>
<author>D</author>
<title>D</title>
<date>4</date>
</bibl>
</div>
<div>
<bibl>
<author>C</author>
<title>C</title>
<date>3</date>
</bibl>
</div>
</body>
</text>
</root>
EOT;
$xmldoc = new SimpleXMLElement($xml);
步骤2:编写一个比较函数。由于数组是simplexmlement
s的列表,因此比较函数必须接受simplexmlement
参数simplexmlement
s需要显式强制转换来获取字符串或整数值
function author_cmp($a, $b) {
$va = (string) $a->bibl->author;
$vb = (string) $b->bibl->author;
if ($va===$vb) {
return 0;
}
return ($va<$vb) ? -1 : 1;
}
基本程序是
simplexmlement
强制转换为数组simplexmlement
参数的比较函数usort()
$xml = <<<EOT
<root>
<text>
<body>
<div>
<bibl>
<author>A</author>
<title>A</title>
<date>1</date>
</bibl>
</div>
<div>
<bibl>
<author>B</author>
<title>B</title>
<date>2</date>
</bibl>
</div>
<div>
<bibl>
<author>D</author>
<title>D</title>
<date>4</date>
</bibl>
</div>
<div>
<bibl>
<author>C</author>
<title>C</title>
<date>3</date>
</bibl>
</div>
</body>
</text>
</root>
EOT;
$xmldoc = new SimpleXMLElement($xml);
步骤2:编写一个比较函数。由于数组是simplexmlement
s的列表,因此比较函数必须接受simplexmlement
参数simplexmlement
s需要显式强制转换来获取字符串或整数值
function author_cmp($a, $b) {
$va = (string) $a->bibl->author;
$vb = (string) $b->bibl->author;
if ($va===$vb) {
return 0;
}
return ($va<$vb) ? -1 : 1;
}
使用
usort
可能重复的用法usort
可能重复的用法非常感谢。你的回答很详细,很有帮助。同样,您对SimpleXML对象与数组的说明对于像我这样的业余爱好者非常有用。:)它工作得很好。如果您有时间,您是否可以尝试简要解释cmp功能的工作原理。我一直在读手册,但它似乎真的让我困惑。如果没有时间,没问题。用于排序的自定义比较函数是许多语言的一个非常常见的功能。有关说明和示例,请参见。基本思想是使用一个函数,该函数接受要排序的两个对象并返回-1、0或1,具体取决于第一个对象是小于、等于还是大于第二个对象。usort(或其他)将在需要比较两件事时调用您提供的函数。非常感谢——这是一个非常有用的解释。非常感谢。你的回答很详细,很有帮助。同样,您对SimpleXML对象与数组的说明对于像我这样的业余爱好者非常有用。:)它工作得很好。如果您有时间,您是否可以尝试简要解释cmp功能的工作原理。我一直在读手册,但它似乎真的让我困惑。如果没有时间,没问题。用于排序的自定义比较函数是许多语言的一个非常常见的功能。有关说明和示例,请参见。基本思想是使用一个函数,该函数接受要排序的两个对象并返回-1、0或1,具体取决于第一个对象是小于、等于还是大于第二个对象。usort(或其他)将在需要比较两件事时调用您提供的函数。非常感谢——这是一个非常有用的解释。