如何在PHP上对SimpleXMLElement进行排序 [英] How to sort SimpleXMLElement on PHP

查看:72
本文介绍了如何在PHP上对SimpleXMLElement进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I want to know how can I sort simple XML elements with PHP. Yes, I found some threads that address the same subject — but I couldn't solve my problem.

我要排序的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>

我找到了 this

I found this and this solution, but the logic to apply this on multidimensional XML array is not clearly for me. Can someone help me?

谢谢.

推荐答案

没有使用SimpleXML进行排序的真正简便方法.您将必须使用元素创建一个数组,对它们进行排序,然后重建XML:

There's no real easy way to sort using SimpleXML; you would have to create an array with the elements, sort them and then reconstruct the 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上对SimpleXMLElement进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆