@PHPjedi

Почему возникает ошибка: A non-numeric value encountered?

Здравствуйте!

Я хочу просчитать общую длительность плейлиста с Youtube.
Подгружаю каждое видео по-отдельности и пытаюсь суммировать это всё в секундах(код ниже).

$playlistItems = Youtube::getPlaylistItemsByPlaylistId($youtube_list_id); // Получаю все видео с плейлиста

            $duration = '';

            foreach ($playlistItems['results'] as $result) {
                $video = Youtube::getVideoInfo($result->contentDetails->videoId); // Получаю данные о видео
                $duration += ISO8601ToSeconds($video->contentDetails->duration); // Получая длительность видео, с помощью функции я получаю всё это в секундах. 
            }


Возникает такая ошибка: A non-numeric value encountered. Ругается на последнюю строчку кода: $duration += ISO8601ToSeconds($video->contentDetails->duration); .

Помогите решить проблему...

Спасибо!
  • Вопрос задан
  • 13889 просмотров
Решения вопроса 1
@Yan-s
у вас в $duration строка, вы к ней что то прибавляете.

Замените $duration = ''; на $duration = 0;
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
@iljaGolubev
dump(ISO8601ToSeconds($video->contentDetails->duration));
spoiler
$x=1;
$x+='';
// A non-numeric value encountered ...

Ответ написан
Комментировать
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
А код функции ISO8601ToSeconds мы, видимо, должны представить в голове?
/**
 * Convert ISO 8601 values like P2DT15M33S
 * to a total value of seconds.
 *
 * @param string $ISO8601
 */
function ISO8601ToSeconds($ISO8601){
    $interval = new \DateInterval($ISO8601);

    return ($interval->d * 24 * 60 * 60) +
        ($interval->h * 60 * 60) +
        ($interval->i * 60) +
        $interval->s;
}

Источник
Ответ написан
Немного решений на эту тему

var_dump($item['quantity'], $product['price'])

<?php

if (is_numeric($item['quantity']) && is_numeric($product['price'])) {
$sub_total += ($item['quantity'] * $product['price']);
} else {
// do some error handling...
}

Alternatively you can use $sub_total += ((int)$item['quantity'] * (int)$product['price']);

$sub_total += ((int)$item['quantity'] * (int)$product['price']);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы