2014-03-26 74 views
3

我试图从Vimeo Api中检索字段的值,我试过了这里提到的所有可能的解决方案。有人能告诉我如何分别从缩略图和url对象中检索thumnail和url吗?从stdClass对象数组中获取数据

array(1) { 
    [0]=>  
     stdClass Object (
      [allow_adds] => 1 
      [embed_privacy] => anywhere 
      [id] => 123456789 
      [is_hd] => 0 
      [is_transcoding] => 0 
      [license] => 0 
      [privacy] => anybody 
      [title] => Soap Opera 
      [description] => 
      [upload_date] => 2014-02-20 03:03:50 
      [modified_date] => 2014-02-20 19:06:05 
      [number_of_plays] => 1 
      [number_of_likes] => 0 
      [number_of_comments] => 0 
      [width] => 600 
      [height] => 480 
      [duration] => 32 
      [owner] => stdClass Object (
       [display_name] => blah 
       [id] => 12345678 
       [is_plus] => 0 
       [is_pro] => 1 
       [is_staff] => 0 
       [profileurl] => http://vimeo.com/st 
       [realname] => ST 
       [username] => ST 
       [videosurl] => http://vimeo.com/st/videos 
       [portraits] => stdClass Object (
        [portrait] => Array (
         [0] => stdClass Object (
          [height] => 30 
          [width] => 30 
          [_content] => http://b.vimeocdn.com/x.jpg 
         ) 

         [1] => stdClass Object (
          [height] => 75 
          [width] => 75 
          [_content] => http://b.vimeocdn.com/x.jpg 
         ) 

         [2] => stdClass Object (
          [height] => 100 
          [width] => 100 
          [_content] => http://b.vimeocdn.com/x.jpg 
         ) 

         [3] => stdClass Object (
          [height] => 300 
          [width] => 300 
          [_content] => http://b.vimeocdn.com/x.jpg 
         ) 

        ) 

       ) 

      ) 

      [urls] => stdClass Object (
       [url] => Array (
        [0] => stdClass Object (
         [type] => video 
         [_content] => http://vimeo.com/0000 
        ) 
       ) 
      ) 

     [thumbnails] => stdClass Object (
      [thumbnail] => Array (
       [0] => stdClass Object (
        [height] => 75 
        [width] => 100 
        [_content] => http://b.vimeocdn.com/x.jpg 
       ) 
      ) 
     ) 
    ) 

我有一个数组$ VIDS具有各种VIDS的与获取的第二阵列$ vidInfo含有上述用于每个条目显示在阵列内循环另一呼叫沿着所述元信息。我可以检索标题等,就像我会正常访问一个对象。 但我不能再遍历上面的回应。

<?php 
    $vids = $videos->videos->video;  
     foreach ($vids as $vid){ 
      $id = $vid->id; 
      $vidInfo = $vimeo->call('vimeo.videos.getInfo', array('video_id' => $id)); 
      $vidUrl = $vidInfo->video; 
      echo $vid->title; 
      echo '<br />'; 
      print_r($vidUrl->urls->url[0]->{'_content'}); 
      //echo '<pre>' . print_r($vidUrl) . '</pre>'; 
     } 
    ?> 

非常感谢

+1

'$对象 - > urls->网址[0] - > _ content'是URL,和'$ object->缩略图 - >缩略图[0] - > _ content'就是缩略图...你到底想要去哪里? – Tularis

+0

我一直试图整天,以及其他可能的方式来访问数组中的对象,但是当我循环它并尝试回显每个条目的url时,它将返回null。非常感谢你的回复。 :]它仍然不会在foreach循环中返回任何东西。 – SinSync

+0

因此,向我们展示你已经尝试过(代码),我们会尽力帮助你。这个网站是关于学习做事情,而不仅仅是为了得到一个快速修复;) – Tularis

回答

6

考虑您有:

[urls] => stdClass Object 
    (
     [url] => Array 
      (
       [0] => stdClass Object 
        (
         [type] => video 
         [_content] => http://vimeo.com/0000 
        ) 

      ) 

    ) 

访问的对象是通过对象的访问的操作员(->)完成,而访问数组是通过方括号完成([x])。 所以在这种情况下你最终得到urls->url[0]->_content。由于urls是一个对象,并且url是一个数组,其第一个([0])索引包含另一个对象。

因此,在短期,要回答你满原题: $object->urls->url[0]->_content是URL 和 $object->thumbnails->thumbnail[0]->_content是缩略图

+0

感谢您的详细回复,但我非常舒适地遍历对象和数组,尝试了我花了半天时间的各种组合,想着我只是瞬间消失。 :P – SinSync

+0

无法遍历任何比$对象更远的地方。甚至没有$ object-> urls。这有什么理由可以想到吗?另一种方法是将对象转换为数组并尝试,但我相信有比这更好的方法。 – SinSync

2

对于URL

echo $yourobj->urls->url[0]->{'_content'}; 

进行缩略图

echo $yourobj->thumbnails->thumbnail[0]->{'_content'}; 

你可以从print_r表现看,可以看到stdClass ObjectArray,所以前者代表object后者代表array。对象访问像->。为了访问阵列元件使用方括号[ ]

+0

' - > _ content'是一个非常正常且允许的标识符。不需要在这里使用' - > {'_ content'}'... – Tularis

+0

我说过的任何地方,它是_abnormal_? –

+0

不,但我不明白为什么你会使用'{'_content'}'否则。我知道没有人会将它用于非exoctic属性名称。通过这个答案,你似乎主张在所有情况下使用它。 – Tularis