Tema: Re: manipuliacija xmlobject duomenimis
Autorius: Jurgis
Data: 2011-12-07 22:46:33
Atradau pats galiausiai rūšiavimo būdą su php - funkcija xsort, naudojanti 
array_multisort. Tik tam dar reikėjo pasiversti data i kitoki datos formata, 
kad išeitų rūšiuoti

function xsort(&$nodes, $child_name, $order=SORT_ASC)
{
    $sort_proxy = array();
    foreach ($nodes as $k => $node) {
        $sort_proxy[$k] = (string) $node->$child_name;
    }
    array_multisort($sort_proxy, $order, $nodes);
}

$xml = simplexml_load_file("koncertai.xml");
$nodes = $xml->xpath('concerts/concert');

foreach ($nodes as $concert){
 $formatas=date('Y-m-d', strtotime($concert->date));
 $concert->date=$formatas;
}

xsort($nodes, 'time', SORT_ASC);
xsort($nodes, 'date', SORT_ASC);



"jurgis" <jurgis@burda.lt> parašė naujienų 
news:jbn0jo$hv2$1@trimpas.omnitel.net...
> Sveiki,
>
> reikia nuskaityti xml faila ir atvaizduoti koncertus, ta sekmingai 
> pavyksta padaryti
>
> $xml = simplexml_load_file("koncertai.xml");
> foreach ($xml->concerts->concert as $concert){
> echo($concert->name);
> }
>
> Problema atsiranda jei bandau isrusiuoti pagal data. funkcija sort veiktu, 
> jei duomenys butu tiesiog eilute skaiciu ar zodziu,
> o kaip rusiuoti visa objekta, kad koncertai issideliotu pagal 
> $concert->date?
>
> Bandziau naudoti smarty
>
> {foreach from=$xml->concerts->concert item="concert" key=id}
>  {$concert->name}
> {/foreach}
>
> veikia, o pridejus "sortby" nebegaunu nei vieno koncerto:
>
> {foreach from=$xml->concerts->concert|sortby"date" item="concert"}
>  {$concert->name}
> {/foreach}
>
>