【问题标题】:Saving objects in array back to JSON将数组中的对象保存回 JSON
【发布时间】:2014-03-04 21:11:58
【问题描述】:

我正在尝试根据作为照片说明一部分的评论分数过滤掉一些不需要的 Instagram 图片。

我正在使用Instagram PHP API by cosenary,并且我有数据,并且我已经能够过滤出具有正确语法的条目以获得评论分数 (*/10)。

问题是试图将对象恢复为 json 形式,以便我可以缓存它,这样我就不必继续向 Instagram 发出一百万个请求。

我试图将对象存储在一个数组中,然后将该数组编码回 json,但我不断收到错误

 Trying to get property of non-object in /Users/***/Sites/instagram/index.php on line 16

这是我目前所拥有的。

<?php 

require_once('instagram.class.php');

$app_key = '<removed>';
$instagram = new Instagram($app_key);
$media = $instagram->getTagMedia('kittens');
$pattern = '/\d+\/+10/';
$fulldata = array();

if($media) {
    do {
        foreach ($media->data as $entry) {

            if(is_object($entry) && preg_match($pattern, $entry->caption->text)) {
                $fulldata[] = $entry;
            }
        }
    } while ($media = $instagram->pagination($media));
}

?>

<pre>
    <? echo json_encode($fulldata); ?>
</pre>

我不确定is_object($entry) 的作用是否很大。

【问题讨论】:

  • 也许$entry-&gt;caption 不是一个对象? var_dump($entry)
  • 我成功过滤掉了数据。 Var dumping $entry 给了我我需要的东西。它只是为我将 $fulldata 数组转换回 json。
  • 你需要发布var_dump,错误似乎是$entry-&gt;caption-&gt;text,也是JSON的回声。没有它,任何人都无法提供帮助。

标签: php arrays json caching instagram


【解决方案1】:

这应该可行

<?php 

require_once('instagram.php');

$app_key = '';
$instagram = new Instagram($app_key);
$media = $instagram->getTagMedia('cats');
$pattern = '/\d+\/+10/';
$fulldata = array();
if($media) {
  do {
    foreach ($media->data as $entry) {
      $text = $entry->caption->text;

      if(preg_match($pattern, $text)) {
        $fulldata[] = $entry;
      }
    }
  } while ($media = $instagram->pagination($media));
}

?>

<pre>
    <? echo json_encode($fulldata); ?>
</pre>

【讨论】:

    猜你喜欢
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-09
    相关资源
    最近更新 更多