Сортировка цен из XML - PullRequest
       4

Сортировка цен из XML

1 голос
/ 21 июля 2010

Я пытаюсь отсортировать результаты по ценам XML с информацией, касающейся отелей.Я хочу отображать и сортировать данные по ценам, заданным значением minCostStay, поэтому ASC и DESC должны это делать.

Я использую foreach для бесконечного отображения данных.Теперь мне нужно отсортировать эти данные по цене asc и desc.Я в значительной степени новичок, поэтому любая помощь будет оценена, особенно если это простой пример =)

Это более или менее то, что я делаю:

   $url ="http://www.somedomain.com/cgi/xml/engine/get_data.php?ref=$ref&checkin=$checkin&checkout=$checkout&rval=$rval&pval=$pval&country=$country&city=$city&lg=$lg";


// load SimpleXML
$all = new SimpleXMLElement($url, null, true);

foreach($all as $hotel) // loop through our hotels



{

echo<< <pre><table width="100%" border=0> <tr> <td colspan="2"><h2><a href="{$hotel->rooms->room->bookUrl}">{$hotel->name}<span class="stars" widht="{$hotel->rating}">{$hotel->rating}</span></h2></a></a> <p><b>Direccion:</b> <i>{$hotel->address}</p></i> </td> <td valign="middle"><div align="center"><a href="{$hotel->rooms->room->bookUrl}"><img src="{$hotel->photoUrl}"></div></td> </tr> <tr> <td colspan="2"> $rest...<a href="{$hotel->rooms->room->bookUrl}"><strong>ampliar información</strong></a></td> <td colspan="2" valign="middle" align="right"><div align="center">PRECIO: <h3>{$hotel->currencyCode}{$hotel->minCostOfStay}</h3> </a></div></td> </tr> <tr> <td colspan="2"><div align="center"><a href="{$hotel->rooms->room->bookUrl}"><strong>VER COMENTARIOS, FOTOS Y DETALLES DE ESTE HOTEL</strong></a></div></td> <td colspan="2"><div align="center">$text</a></div></td> </a></div></td> </tr> EOF; echo '</table>'; }

Я вас слышу!

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 21 июля 2010

1.Получите их из XML (кажется, вы можете это сделать).
2. Поместите их в массив
3. sort() массив, если ваши элементы более сложные. возможно с использованием usort():

$d =  new SimpleXMLElement('<root>
  <item>
    <price>1234</price>
  </item>
  <item>
    <price>4123</price>
  </item>
  <item>
    <price>3142</price>
  </item>
  <item>
    <price>2431</price>
  </item>
</root>');
$items = array();
foreach($d->item as $item) $items[] = $item;
function _mysort($a,$b){return $a->price - $b->price;}
usort($items,'_mysort');
var_dump($items);
1 голос
/ 21 июля 2010

Я недавно обнаружил SimpleDOM для проекта, где мне нужна более продвинутая система xpath. Мне действительно это нравится, и я думаю, что это может сделать то, что вы ищете. Вы можете найти его (документы в комплекте с исходным кодом) здесь: http://code.google.com/p/simpledom/

Вы захотите взглянуть на метод sortedXPath (), которому я верю:

sortedXPath (line 888)

Run an XPath query and sort the result

This method accepts any number of arguments in a way similar to array_multisort()

   1. // Retrieve all <x/> nodes, sorted by @foo ascending, @bar descending
   2. $root->sortedXPath('//x', '@foo', '@bar', SORT_DESC);
   3. 
   4. // Same, but sort @foo numerically and @bar as strings
   5. $root->sortedXPath('//x', '@foo', SORT_NUMERIC, '@bar', SORT_STRING, SORT_DESC);

    * access: public

void sortedXPath (string $xpath)

    * string $xpath: XPath expression
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...