Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: как прочитать xml c конца
Форумы портала PHP.SU » » XML и его обработка » как прочитать xml c конца

Страниц (1): [1]
 

1. I_CaR - 01 Ноября, 2015 - 15:57:15 - перейти к сообщению
Всем доброго времени.
парсю xml файл:

прерываюсь:
PHP:
скопировать код в буфер обмена
  1. $count=10;
  2. foreach ( $xml->channel->item as $key => $item)  
  3. {
  4.   ... код ...
  5.         $i++;
  6.         if($i == $count) break;
  7. }

Но вот получается, что в файле записей около 50 и получается я получаю лишь самые первые, т.е. "старые" 10.
А как реализовать чтение его (xml-файла) с конца?
2. Faraon-san - 01 Ноября, 2015 - 21:23:52 - перейти к сообщению
http://php.net/manual/ru/functio...rray-reverse.php
3. I_CaR - 03 Ноября, 2015 - 11:26:49 - перейти к сообщению

Спасибо, что потрудились вставить ссылку.
И как вы это себе представляете?
Ответ плох тогда, когда он порождает кучу вопросов!
Я вывожу, например 7 последних записей из 200-300.
Примерно так:
пример кода (там нижний вариант)
Но как эти выводимые в таблицу записи перевернуть? У меня каждая итерация делает строку таблицы.
Для себя, пока, вижу выход только в сборке массива. И его последующий реверс и вывод.
А других путей нет в данной ситуации?
4. Мелкий - 03 Ноября, 2015 - 11:53:46 - перейти к сообщению
$xml->xpath('item[position() >= last() - 10]')
под конкретный xml подправьте только.
5. Faraon-san - 04 Ноября, 2015 - 15:30:04 - перейти к сообщению
я предлагал вот таким способом, правда что менее затратно по ресурсам, хз, думаю вариант мелкого лучше.
PHP:
скопировать код в буфер обмена
  1. $xml = simplexml_load_file( 'http://www.vesti.ru/vesti.rss' );
  2. $xml = json_encode( $xml );
  3. $xml = json_decode( $xml , true );
  4. $xml['channel']['item'] = array_reverse($xml['channel']['item']);
  5.  
  6. var_dump($xml['channel']['item']);
6. armancho7777777 - 04 Ноября, 2015 - 15:47:27 - перейти к сообщению
Faraon-san пишет:
правда что менее затратно по ресурсам

Более
7. I_CaR - 05 Ноября, 2015 - 13:30:28 - перейти к сообщению
Faraon-san пишет:
...array-reverse...

Эм... практически извиняюсь пред вами за резкий ответ (такой уж я человек).
Но покрутившись вокруг xpath, сделал всё-таки через реверс, как сам я и думал раньше.
Сразу как-то решение не дошло (мозг тоже имеет свойство перегреваться у меня).

1. Весь вывод таблицы собрал в массив.
2. Потом его перевернул реверсом
3. И потом вывел через for
Всё работает.
Кстати, посмотреть "произведение" можно тут.

И человеческое спасибо всем, за то что подталкиваете чьи-то мозги к реализации чего-то.
(отдельное Спасибо Faraon-san'у)

 

Powered by ExBB FM 1.0 RC1