сортировать массив simplexml - PullRequest
0 голосов
/ 27 ноября 2011

У меня есть этот массив simplexml, который мне удалось получить из примеров на Google. Теперь я должен отсортировать массив.

это то, что у меня есть.

$url = 'http://api.trademe.co.nz/v1/Member/2128687/Listings/All.xml';

$xml = simplexml_load_file($url);

foreach($xml->List->Listing as $list){
echo $list->EndDate;
echo '<br/>';
}

все работает так, как должно. Я хочу отсортировать его по дате ближе.

Я перепробовал все примеры, которые смог найти, и я просто получаю белый экран ничего.

пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 27 ноября 2011

используя usort

        $xml = simplexml_load_file($url);

        $listingarray = (array)$xml->List;
        $listingarray = $listingarray['Listing'];


    function compare($obj1,$obj2)
    {   
        $time1 = strtotime($obj1->EndDate); 
        $time2 = strtotime($obj2->EndDate); 

        if($time1 == $time2)
            return 0;

        return ($time1 > $time2 ? -1 : 1);
    }

    usort($listingarray,'compare');



        foreach($listingarray as $list)
        {
            echo $list->EndDate . '<br />';
        }
    ?>

если ваша версия php> = 5.3, вы можете написать функцию сравнения в качестве параметра ..

usort($listingarray,function($obj1,$obj2)
    {   
        $time1 = strtotime($obj1->EndDate); 
        $time2 = strtotime($obj2->EndDate); 

        if($time1 == $time2)
            return 0;

        return ($time1 > $time2 ? -1 : 1);
});
0 голосов
/ 27 ноября 2011
function cmp($a, $b)
{
    $a = strtotime($a->EndDate);
    $b = strtotime($b->EndDate);
    if ($a == $b) 
    {
        return 0;
    }
    return ($a < $b) ? -1 : 1;
}

uasort($xml->List->Listing, 'cmp');
print_r($array);
...