Как спарсить 20 последних видео ютуба

есть такая функция

`function getYoutubePlaylistDataXml($ytlist, $cnt = 100, $cache_life = 3600)
{
    # файл, содержащий копию ленты
    $cache_file = dirname(__FILE__) . DIRECTORY_SEPARATOR . $ytlist . '.json';

    # Ключ для запросов
    $api_key = 'ключ';

    # специальный адрес, отвечающий за выдачу фида
    $url = 'https://www.googleapis.com/youtube/v3/playlistItems?part=snippet'
        . '&playlistId=' . $ytlist
        . '&maxResults=' . $cnt
        . '&key=' . $api_key;



    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    $buf = curl_exec($ch);
    curl_close($ch);

    if($url != '&pageToken=') {
        $url = 'https://www.googleapis.com/youtube/v3/playlistItems?part=snippet'
            . '&playlistId=' . $ytlist
            . '&maxResults=' . $cnt
            . '&pageToken=' . "----"
            . '&key=' . $api_key;
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        $pars = curl_exec($ch);
        curl_close($ch);


    }

# декодируем JSON данные

    $buf = json_decode($buf,true);
    $pars = json_decode($pars,true);

    foreach ($pars['items'] as $val) {
        $buf['items'][] = $val;
    }
    return json_encode($buf, JSON_UNESCAPED_UNICODE);
    



}`

как сделать что бы парсилось 20 последних видео? на данный момент выводит все видео с плейлиста


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

Автор решения: u_mulder

Если нет никакой возможности отсортировать элементы, то можно сделать так:

// ... предыдущий код
foreach ($pars['items'] as $val) {
    $buf['items'][] = $val;
}

// теперь возьмем $size последних элементов массива $buf['items']:
$size = 20;
// добавляем `-` перед `$size`, чтобы взять именно с конца
// если элементом в массиве меньше 20 - то все они вернутся 
$buf['items'] = array_slice($buf['items'], -$size);

return json_encode($buf, JSON_UNESCAPED_UNICODE);
→ Ссылка