array_reverse не выполняет свою функцию

$url = "https://www.om1.ru/news/rss/";
$xml = simplexml_load_file($url);

$json = json_encode($xml);
$array = array_reverse(json_decode($json,TRUE));

print_r($array);

По логике array_reverse должен вернуть массив с элементами в обратном порядке, но на деле этого не происходит. Подскажите, пожалуйста, в чем заключается проблема?


Ответы (1 шт):

Автор решения: Павел Ериков

array_reverse правильно работает. У вас json_decode возвращает массив, в котором идет сначала [@attributes], а потом [channel] и после выполнения функции array_reverse у вас [@attributes] окажется в конце.

И тут смотря что вам нужно перевернуть. Судя по структуре, вам нужно перевернуть [item] то есть элементы канала "Последние новости".

Если это так, то нужно писать так:

$url = "https://www.om1.ru/news/rss/";
$xml = simplexml_load_file($url);
$json = json_encode($xml);
$data = json_decode($json, TRUE);
//Обращаемся к `channel`, а потом к `item` и в итоге мы получим
//массив новостей, который потом переворачиваем
$array = array_reverse($data['channel']['item']);
print_r($array);
→ Ссылка