首页 > 解决方案 > 我在一个地方得到了未定义的财产?

问题描述

我是 php 新手

我有这个代码

 $query = $request->all();
    $allParameters = $request->all();
    $keyword = 'جورج';
    $apikey = 'XXX'; 
    $googleApiUrl = 'https://www.googleapis.com/youtube/v3/search?part=snippet&q=' . $keyword . '&maxResults=' . 100 . '&key=' . $apikey;
   // dd($googleApiUrl);
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $googleApiUrl);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_VERBOSE, 0);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    $response = curl_exec($ch);
    curl_close($ch);
    $data = json_decode($response);
    $value = json_decode(json_encode($data), true);
    $init = new stdClass;
    $array = [];
    //dd($data->items);
     foreach($data->items as $i => $item) { 
            $i++;
            $init = new stdClass;
           //dd($item->id->videoId);
            //dd(sprintf("https://www.youtube.com/watch?v=%s",$item->id->videoId));
            $ura = sprintf("https://www.youtube.com/watch?v=%s",$item->id->videoId);
            $init->Nmae = $item->snippet->title;
          
          // $init->url =  sprintf("https://www.youtube.com/watch?v=%s",$item->id->videoId);
            $init->Id = $i;
            array_push($array,$init);
            DB::table('wassoufs')->insert(
              ['Id' =>$i , 'Name' => $item->snippet->title, 'url'=>  $ura]
            );
        };

未定义属性:stdClass::$videoId

dd(sprintf("https://www.youtube.com/watch?v=%s",$item->id->videoId));

工作正常

但是当我这样做的时候

 $ura = sprintf("https://www.youtube.com/watch?v=%s",$item->id->videoId);

我得到未定义的属性:stdClass::$videoId

任何原因 ?

标签: phpyoutube-api

解决方案


正在发生这种情况,因为有时 videoId 为空。

在此处输入图像描述

您不仅会获得 videoIds,还会获得 channelIds。

在此处输入图像描述

如果您只对 videoIds 感兴趣,我会像这样重写。

       $i++;
       $init = new stdClass;

       if (isset($item->id->videoId)) {

               $ura = sprintf("https://www.youtube.com/watch?v=%s",$item->id->videoId);
               $init->Nmae = $item->snippet->title;
      
               $init->Id = $i;
               array_push($array,$init);
               DB::table('wassoufs')->insert(
                  ['Id' =>$i , 'Name' => $item->snippet->title, 'url'=>  $ura]);
          }

        

推荐阅读