Я хочу знать, как я могу сортировать простые элементы XML с PHP. Да, я нашел несколько потоков, которые затрагивают один и тот же вопрос, но я не мог решить свою проблему.
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>
Я нашел это и это решение, но логика применения этого в многомерном массиве 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>';