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ì:
ma se uso questo codicecodice:<?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>
ottengo il messaggio: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);
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) è:
allora ho provato a modificare il codice così: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 ) ) )
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!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);
Come fare?
Esiste un'altro metodo per riordinare file xml con php?
Sbaglio il procedimento?
Grazie in anticipo a chi vorrà aiutarmi

Rispondi quotando