【问题标题】:PHP: get data from json array without loopPHP:从没有循环的json数组中获取数据
【发布时间】:2015-08-12 16:45:04
【问题描述】:

我有我想从没有循环的数组中获取的数据。

例如,我想获得“link_click”的“价值”,我怎样才能做到这一点?

我试过了:但这不起作用。

$stats = json_decode($data, false);
$link_click= $stats->data->actions->action_type->['link_click']->value;


{
   "data": [
      {
         "actions": [
            {
               "action_type": "comment",
               "value": 2
            },
            {
               "action_type": "link_click",
               "value": 636
            },
            {
               "action_type": "post_like",
               "value": 2
            },
            {
               "action_type": "page_engagement",
               "value": 640
            },
            {
               "action_type": "post_engagement",
               "value": 640
            }
         ],

【问题讨论】:

  • 这听起来很像家庭作业。请发布您尝试过的内容。这不是代码生成网站!
  • 由于您的所有操作条目都有 action_type,您需要循环它们并添加一个条件来检查其值为“link_click”。更好的问题:为什么在这种情况下循环不是一个选项?
  • @nLee,此代码来自 facebook api 我尝试使用以下方法获取数据:'$link_click= $stats->data->actions->action_type->['link_click']->value ;'
  • @Mario Wenig,你能给我举个例子吗?
  • 查找“foreach php”或“php forach json 数组”

标签: php arrays json


【解决方案1】:

只有知道action_type:link_click 的索引才能实现它的唯一方法。如果你知道索引,你可以做到这一点。 (答案是关于您上面显示的数据)。

$stats = json_decode($data, true);
$link_click= $stats['data']['actions'][1]['value'];

循环示例(根据要求):

$stats = json_decode($data, true);
$value = 0;
foreach($stats['data']['actions'] as $action) {
    if ($action->action_type == 'link_click') {
        $value = $action->value;
    }    
}

echo $value; //This is your value

【讨论】:

  • 嗨,你能给我也给我循环的例子吗?谢谢。
  • 将起作用,如果且仅当结果 json 数据不改变。谨慎信任外部数据,无需自行验证预期的数据。
【解决方案2】:

您可以使用JsonPath 之类的东西来获取价值

【讨论】:

    猜你喜欢
    • 2013-01-18
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 2015-08-22
    • 2015-04-22
    相关资源
    最近更新 更多