У меня есть 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 ?
$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')
];
}
Попробуйте array_slice: https://www.php.net/manual/ru/function.array-slice.php
array_slice($xmlstr->channel->item, -10);
Тест на массивах: http://sandbox.onlinephpfunctions.com/code/441deb7d95229b7526504224546f02e1d95c0051
Измените $i
на $p_cnt-10
. В итоге должно получится:
for($i = max($p_cnt-10, 0); $i < $p_cnt; $i++) {
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Использую несколько альтернативных версий phpТак же использую PHPSTORM
У нас в проекте используется большое кол-во различных классовЧасто в методах классов приходится возвращать набор каких-то данных, например:
более 6 лет работаю на php, и в первый раз увидел такую конструкцию в примерах кода на habr