Как выбрать последние 10 записей через for?

96
29 мая 2021, 19:40

У меня есть n-ое кол-во записей. $p_cnt = count($xmlstr->channel->item);

я перебираю forom, как мне получить последние 10 записей, а не что бы все записи перебирались ?

for($i = max($p_cnt -10, 0); $i < $p_cnt; $i++) {
        echo($xmlstr->channel->item->title[$i])
        $news = [
        'title' => $xmlstr->channel->item->title[$i],
        'img' => $xmlstr->channel->item->image[$i],
        'url' => $xmlstr->channel->item->link[$i],
        'description' => strip_tags($xmlstr->channel->item->description[$i]),
        'data_public' => date('Y-m-d H:i:s'),
        ];
    }

Всегда показывает одну и ту же запись 10 раз. Но когда перебираю foreach То все нормально.

 foreach ($xmlstr->channel->item as $item){
        $news = [
        'title' => $item->title,
        'img' =>   $item->image,
        'url' =>   $item->link,
        'description' => strip_tags($item->description),
        'data_public' => date('Y-m-d H:i:s')
        ];
    }

Что не правильно в цыкле for? Или как можно сделать тогда последних 10 записей foreach ?

Answer 1
$countItems = count($xmlstr->channel->item);
        $i = 0;
        foreach ($xmlstr->channel->item as $key => $item){
            $i++;
            if($i > $countItems - 10){
                $news = [
                    'title' => $item->title,
                    'img' =>   $item->image,
                    'url' =>   $item->link,
                    'description' => strip_tags($item->description),
                    'data_public' => date('Y-m-d H:i:s')
                ];
            }
Answer 2

Попробуйте array_slice: https://www.php.net/manual/ru/function.array-slice.php

array_slice($xmlstr->channel->item, -10);  

Тест на массивах: http://sandbox.onlinephpfunctions.com/code/441deb7d95229b7526504224546f02e1d95c0051

Answer 3

Измените $i на $p_cnt-10. В итоге должно получится:

for($i = max($p_cnt-10, 0); $i < $p_cnt; $i++) {
}
READ ALSO
Не работает php авторизация

Не работает php авторизация

Есть форма авторизации

109
Проблема с xDeBug + PHPStorm + Apache2 + Ubuntu с альтернативными версиями PHP

Проблема с xDeBug + PHPStorm + Apache2 + Ubuntu с альтернативными версиями PHP

Использую несколько альтернативных версий phpТак же использую PHPSTORM

179
Как называются объекты для хранения данных (в которых только геттеры)?

Как называются объекты для хранения данных (в которых только геттеры)?

У нас в проекте используется большое кол-во различных классовЧасто в методах классов приходится возвращать набор каких-то данных, например:

106
Что за конструкиця в php

Что за конструкиця в php

более 6 лет работаю на php, и в первый раз увидел такую конструкцию в примерах кода на habr

85