如何在 PHP 上对 SimpleXMLElement 进行排序

2023-11-29

我想知道如何使用 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>

I found this and this解决方案,但是将其应用于多维 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>';
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 PHP 上对 SimpleXMLElement 进行排序 的相关文章

随机推荐

  • 我们可以有一个按名称参数的函数数组吗?

    在 Scala 中 我们有一个按名称参数 我们可以在其中编写 def foo T f gt T T f invokes f use as foo println hello 我现在想对一系列方法执行相同的操作 即我想将它们用作 def fo
  • Haskell 新手将列表分成两半的问题

    这是我尝试编写一个函数 将偶数长度的列表分成相等的两半 halve a gt a a halve x even len take half x drop half x otherwise error Cannnot halve a list
  • Android Fragment Tab Host + ViewPager 滑动?

    我目前有一个由本教程制作的片段选项卡主机http maxalley wordpress com 2013 05 18 android creating a tab layout with fragmenttabhost and fragme
  • ComponentDidMount 被调用多次

    我构建了一个 HOC 以在我的应用程序中的受保护路由上使用 它接收应在路由上呈现的组件 检查用户是否经过身份验证 然后呈现该组件 如果是 它可以工作 但它会导致组件多次挂载 卸载 与调用我的 app js 文件中的渲染函数的次数一样多 来自
  • 聚类数量未知的无监督聚类

    我有一大组 3 维向量 我需要根据欧几里德距离对它们进行聚类 以便任何特定聚类中的所有向量彼此之间的欧几里德距离小于阈值 T 我不知道有多少个集群 最后 可能存在不属于任何簇的单独向量 因为其与空间中任何向量的欧几里德距离不小于 T 这里应
  • FtpWebRequest 类文件上传时出现 550 文件不可用错误。在 FileZilla 中运行良好

    我进行了搜索并发现了与此相关的其他问题 但没有一个解决了我的问题 我正在尝试使用示例 MSDN 代码通过 FTP 上传文件 我在这一行收到 远程服务器返回错误 550 文件不可用 例如 文件未找到 无法访问 错误 ftpstream Clo
  • C 类型的取值范围

    C 标准中写道 即int应该有 最小值 32767 最大值 32767 但在实现中 即在 16 位机器上 该值是 最小值 32768 最大值 32767 为什么会有负值差异 两个范围都有效 什么是unusual是第一个 32767 3276
  • Elasticsearch 对数组索引的查询

    如何在elasticsearch中按数组的索引查询 过滤 我有一个这样的文件 PUT edi832 record 1 LIN UP 123456789 我想搜索 LIN 0 是否为 UP 并且 LIN 1 是否存在 Thanks 这可能看起
  • 仅当树项的父项是列表中的第一个项时,WPF 才将命令标记为不可用的方法是什么?

    我有一个代表某些项目的树视图 这棵树总是两层深 子项的右键菜单有一个 上移 命令 UI 允许您向上移动子项目 即使它是其父项目的第一个项目 只要父级别上有另一个项目 位于所选项目的父项目之上 执行此操作的明显方法是获取所选项目的父级并查看其
  • 生成已扩展模板的 C++ 代码

    我想知道是否有一种方法可以使用 C 编译器来生成 C 代码 其中所有模板都已扩展为程序所需的实例化 该代码必须存在于编译过程中的某个时刻 尽管默认情况下可能不是 ASCII 形式 但在我看来 将其转换回可读的 C 代码应该不会太困难 EDI
  • Perl解析文件内容

    我正在尝试解析由 3 个类别组成的文本文件内容并在主代码中访问它 我知道哈希可能是一个好方法 但由于输入文件中没有唯一的列 名称可能重复或不同 我怀疑是否还有其他方法可以做到这一点 感谢任何回复 usr bin perl use stric
  • Google Maps API V3 构建包含多个邮政编码的多边形

    我必须允许用户输入多个邮政编码 从数据库中检索纬度和经度 然后构建一个包含它们的巨大多边形 I m coding in Java and using Google Maps API V3 I have no problem doing a
  • 使用正则表达式替换大括号中的标签,甚至嵌套标签

    Example preg replace a zA Z 0 9 Replaced Lorem ipsum dolor sit tag1 tag2 consectetur adipiscing elit 结果 Lorem ipsum dolo
  • 在不同网络上使用套接字通信

    大家好 stackoverflowers 我目前正在开发这个应用程序 它应该能够在设备之间进行通信 我发现this关于如何使用 Socket 进行此类通信的很酷的指南 它成功了 ish 我的问题是它仅在两个设备连接到同一 Wi Fi 时才有
  • 将 CSS 类添加到 RMarkdown 中的单个代码块

    是否可以将 CSS 类添加到特定的代码块中 假设有以下文件 title Untitled output html document r cars summary cars 我想给标记为 汽车 的块指定一个 CSS 类 例如 myClass
  • 单击时如何更改按钮颜色

    我是新的 css 单击时很难更改按钮的颜色 通常 当单击按钮时 按钮颜色会在很短的时间内变成蓝色 我希望它是黄色的 我怎样才能做到这一点 html
  • 通过 AS3 设置组合框文本格式

    我正在开发一个 AIR 应用程序 我需要更改下拉列表中显示的文本以及组合框中的主要文本的字体大小 我的组合框很大 但其中显示的文本很小 我尝试使用 setStyle 方法 将 TextFormat 传递给它 如下所示 cmbEmployee
  • 我可以对包含的外部 javascript 文件使用 301 重定向吗?

    我正在尝试清理网站上的一些文件 其中一项任务是将所有对 jquery 的引用整理到一个文件中 是的 这是一个拥有多个开发人员的大型网站 并且没有遵循一些标准 导致目前引用了各种版本的 jquery 的情况 我尝试做的是为这些文件创建 301
  • 在打开另一个信息窗口之前关闭信息窗口

    我的信息窗口有问题 我有一个通过 JSON 检索数据的 ajax 函数 但是当您打开另一个时 我无法自动关闭 InfoWindow 我的代码是这样的 var mapOptions center new google maps LatLng
  • 如何在 PHP 上对 SimpleXMLElement 进行排序

    我想知道如何使用 PHP 对简单的 XML 元素进行排序 是的 我发现了一些解决同一主题的线程 但我无法解决我的问题 我想要排序的 XML 是