Buon pomeriggio a tutti, devo riordinare il file prova.xml in base al contenuto di un elemento (ord)
non ho trovato documentazione sul riordinamento diretto di file xml quindi ho provato a riordinare l'array multidimensionale.
Il file xml è strutturato così:
codice:
<?xml version="1.0"?>
<root>
<foto>
<ord>2</ord>
<descrizione>Descrizione foto 1</descrizione>
<url>foto/001.jpg</url>
<permesso>1</permesso>
<dimensioni>656 x 500</dimensioni>
</foto>
<foto>
<ord>3</ord>
<descrizione>Descrizione foto 2</descrizione>
<url>foto/002.jpg</url>
<permesso>1</permesso>
<dimensioni>760 x 493</dimensioni>
</foto>
<foto>
<ord>6</ord>
<descrizione>Descrizione foto 3</descrizione>
<url>foto/003.jpg</url>
<permesso>1</permesso>
<dimensioni>non dichiarate</dimensioni>
</foto>
</root>
ma se uso questo codice
codice:
$filexml='prova.xml';
$xml = simplexml_load_file($filexml);
foreach($xml->foto as $foto){
$ord[]=$foto->ord;
$permesso[]=$foto->permesso;
$descrizione[]=$foto->descrizione;
$url[]=$foto->url;
$dimensioni[]=$foto->dimensioni;
}
#array_multisort($ord,SORT_ASC,SORT_NUMERIC, $permesso,SORT_ASC,SORT_NUMERIC, $xml);
ottengo il messaggio:
Warning: array_multisort() [function.array-multisort]: Argument #7 is expected to be an array or a sort flag in /var/www/xml/mio/albumXML/riordina.php on line 15
l'output di print_r($xml) è:
codice:
SimpleXMLElement Object
(
[foto] => Array
(
[0] => SimpleXMLElement Object
(
[ord] => 20
[descrizione] => Descrizione foto 1
[url] => foto/001.jpg
[permesso] => 1
[dimensioni] => 656 x 500
)
[1] => SimpleXMLElement Object
(
[ord] => 30
[descrizione] => Descrizione foto 2
[url] => foto/002.jpg
[permesso] => 1
[dimensioni] => 760 x 493
)
[2] => SimpleXMLElement Object
(
[ord] => 10
[descrizione] => Descrizione foto 3
[url] => foto/003.jpg
[permesso] => 1
[dimensioni] => non dichiarate
)
)
)
allora ho provato a modificare il codice così:
codice:
$filexml='prova.xml';
$xml = simplexml_load_file($filexml);
foreach($xml as $xml_2)$xml_arr[]=$xml_2 //creo un nuovo array dall'oggetto $xml
foreach($xml->foto as $foto){
$ord[]=$foto->ord;
$permesso[]=$foto->permesso;
$descrizione[]=$foto->descrizione;
$url[]=$foto->url;
$dimensioni[]=$foto->dimensioni;
}
array_multisort($ord,SORT_ASC,SORT_NUMERIC, $permesso,SORT_ASC,SORT_NUMERIC, $xml_arr);
e in effetti il warning sparisce e se stampo print_r($xml_arr); vedo che l'array è stato ordinato correttamente, il problema è che per salvare le modifiche dovrei trasformare $xml_arr in un nuovo oggetto simplexml oppure in una stringa xml!
Come fare?
Esiste un'altro metodo per riordinare file xml con php?
Sbaglio il procedimento?
Grazie in anticipo a chi vorrà aiutarmi