JSON пропуская массивы вставлять только то, что нужно - PullRequest
0 голосов
/ 14 октября 2018

У меня есть проблема, как вы можете видеть в данных json, у меня есть 3 массива, 2 из них "kind": "youtube#video", и один "kind": "youtube#playlist", php-код вставляет данные из json и работает отлично, но когда в json "kind": "youtube#playlist", он неработа в настоящее время, мне нужно вставить только из #video, пожалуйста, помогите мне попробовать исправить это весь денькак SKIP массивы с плейлистом?только выбирать информацию из массива #video, пропуская другие и получая информацию только из «kind»: «youtube # video», массивов.

Ошибка при #playlist в json

Примечание: не определеноindex: videoId в D: \ xampp \ htdocs \ test \ index.php в строке 62

62LINE: $ videos [$ key] = $ items ['id'] ['videoId'];

КОД:

$loop = mysqli_query($conn, "SELECT channelid FROM users ORDER BY id")
    or die (mysqli_error($conn));

    while ($row = mysqli_fetch_array($loop))
    {
        $channelid = $row['channelid'];
                    $content = file_get_contents($url); 
        $json = json_decode($content, true);    

        if(!isset($json['items'])) continue; //skip if no items

        $videos = ['videoId'=>'','videoId1'=>'','videoId2'=>'','videoId3'=>'','videoId4'=>''];
        $videossw = ['vidname'=>'','vidname1'=>'','vidname2'=>'','vidname3'=>'','vidname4'=>''];
        $videoss = ['publishedAt'=>'','publishedAt1'=>''];

        $i = 0;
        //if(isset($videoList[$i]["id"]["videoId"])) {
        foreach($json['items'] as $items)
        {
            $keyy  = 0==$i ? 'publishedAt' : 'publishedAt'.$i;
            $videoss[$keyy] = $items['snippet']['publishedAt'];

            $keyyy  = 0==$i ? 'vidname' : 'vidname'.$i;
            $videossw[$keyyy] = $items['snippet']['title']; 

            $key  = 0==$i ? 'videoId' : 'videoId'.$i;
            $videos[$key] = $items['id']['videoId']; 
            ++$i;
        }
        $qqq = 'INSERT INTO users(channelid, publishedAt, publishedAt1, videoId, videoId1, videoId2, videoId3, videoId4, vidname, vidname1, vidname2, vidname3, vidname4) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE channelid=?, publishedAt=?, publishedAt1=?, videoId=?, videoId1=?, videoId2=?, videoId3=?, videoId4=?, vidname=?, vidname1=?, vidname2=?, vidname3=?, vidname4=?';
        $stmt = $conn->prepare($qqq);
        $stmt->bind_param('ssssssssssssssssssssssssss', $channelid, $videoss['publishedAt'], $videoss['publishedAt1'], $videos['videoId'], $videos['videoId1'], $videos['videoId2'], $videos['videoId3'], $videos['videoId4'], $videossw['vidname'], $videossw['vidname1'], $videossw['vidname2'], $videossw['vidname3'], $videossw['vidname4'], $channelid, $videoss['publishedAt'], $videoss['publishedAt1'], $videos['videoId'], $videos['videoId1'], $videos['videoId2'], $videos['videoId3'], $videos['videoId4'], $videossw['vidname'], $videossw['vidname1'], $videossw['vidname2'], $videossw['vidname3'], $videossw['vidname4']);

        $stmt->execute();


    }

1 Ответ

0 голосов
/ 14 октября 2018

Записать условие сразу после

foreach ($json['items'] as $items) {

, которое дисквалифицирует данные.

if ($items['id']['kind'] != 'youtube#playlist') {

Реализация:

foreach ($json['items'] as $i => $items) {
    if ($items['id']['kind'] != 'youtube#playlist') {
        $keyy = !$i ? 'publishedAt' : "publishedAt$i";
        $videoss[$keyy] = $items['snippet']['publishedAt'];

        $keyyy = !$i ? 'vidname' : "vidname$i";
        $videossw[$keyyy] = $items['snippet']['title']; 

        $key = !$i ? 'videoId' : "videoId$i";
        $videos[$key] = $items['id']['videoId']; 
    }
}
...