php - 如何在 PHP 上对 SimpleXMLElement 进行排序

标签 php xml sorting

我想知道如何使用 PHP 对简单的 XML 元素进行排序。是的,我发现了一些讨论同一主题的话题 — 但我无法解决我的问题。

我要排序的 XML 是:

<?xml version="1.0" encoding="UTF-8"?>
<cursos>
  <curso>
    <id>DRW</id>
    <nome>Design Responsivo</nome>
    <categoria>Web</categoria>
    <inicio>30/02/2013</inicio>
    <periodo>Sábados de manhã</periodo>
    <cargaHoraria>40h</cargaHoraria>
    <objetivos></objetivos>
  </curso>
  <curso>
    <id>MSQ</id>
    <nome>MySQL</nome>
    <categoria>Banco de dados</categoria>
    <inicio>30/03/2013</inicio>
    <periodo>Sábados de manhã</periodo>
    <cargaHoraria>20h</cargaHoraria>
    <objetivos></objetivos>
  </curso>
  <curso>
    <id>MBY</id>
    <nome>Iniciação à informática</nome>
    <categoria>Iniciantes e Usuários Av.</categoria>
    <inicio>30/04/2013</inicio>
    <periodo>Matutino 1</periodo>
    <cargaHoraria>80h</cargaHoraria>
    <objetivos></objetivos>
  </curso>
  <curso>
    <id>FCS</id>
    <nome>Desenvolvendo em C#</nome>
    <categoria>Desenvolvimento</categoria>
    <inicio>14/04/2013</inicio>
    <periodo>Domingo</periodo>
    <cargaHoraria>60h</cargaHoraria>
    <objetivos></objetivos>
  </curso>
  <curso>
    <id>MAY</id>
    <nome>Modelagem em Maya</nome>
    <categoria>Artes gráficas</categoria>
    <inicio>13/04/2013</inicio>
    <periodo>Sábado 08h:00-13h:00</periodo>
    <cargaHoraria>60h</cargaHoraria>
    <objetivos></objetivos>
  </curso>
</cursos>

我找到了 thisthis解决方案,但将其应用于多维 XML 数组的逻辑对我来说并不清楚。有人可以帮助我吗?

提前致谢。

最佳答案

没有真正简单的方法可以使用 SimpleXML 进行排序;您必须创建一个包含元素的数组,对它们进行排序,然后重建 XML:

$d = simplexml_load_string($xml);
// turn into array
$e = array();
foreach ($d->curso as $curso) {
        $e[] = $curso;
}
// sort the array
usort($e, function($a, $b) {
        return $a->cargaHoraria - $b->cargaHoraria;
});
// put it back together
echo '<cursos>';
foreach ($e as $node) {
        echo $node->saveXML();
}
echo '</cursos>';

关于php - 如何在 PHP 上对 SimpleXMLElement 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15744106/

相关文章:

php - 如何在 Symfony 3.3 中处理前端堆栈

php - 删除所有行,但显示由 id 指定的单击行

c++ - XML 文件格式中的 bool 值应该写成 true/false 还是 1/0?

xml - 删除 XML 命名空间,同时忽略根中的命名空间

排序英式日期

java - 按字母顺序排序arraylist(不区分大小写)

php - API平台自定义操作为数据论证提供值(value)

PHP & MySQL - 正确显示数据

java - 无法在 Pig 中处理 Xml

sorting - CUDA 推力和 sort_by_key