我有一个问题,你可以在 json 数据中看到我有 3 个数组,其中 2 个
"kind": "youtube#video",
和一个 "kind": "youtube#playlist"
,php 代码从 json 插入数据并且工作完美但是在 json "kind": "youtube#playlist",
他目前不工作,我只需要从#video 插入请帮助我尝试修复它一整天。如何使用播放列表跳过数组?仅从#video 数组中选择信息,跳过其他数组,仅从“kind”:“youtube#video”,数组中获取信息。
Error when #playlist in json
Notice: Undefined index: videoId in D:\xampp\htdocs\test\index.php on line 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();
}
最佳答案
紧接着写一个条件
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'];
}
}
关于php - Json跳过数组只插入需要的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52797742/