使用php获取数组中的匹配条目

时间:2015-10-24 23:44:15

标签: php json api

我需要从json数组中获取一个特殊条目,它应该与id匹配。

{
            "response": {
                "count": 62,
                "inventory": [
                    {
                        "id": 10,
                        "style": 982
                    },
                    {
                        "id": 20,
                        "style": 0
                    },
                    {
                        "id": 30,
                        "style": 1
                    }       ]
    }}

我现在拥有的一切都是这段代码:

$matching_value = 10;    
foreach($json_data as $key => $val){
    if($val->id == $matching_value){
      echo $val->id;
      echo $val->style;
       }
    }

但它没有用,我也不知道为什么。我的方法不适用于子条目吗?

1 个答案:

答案 0 :(得分:1)

你走了。

  • 您需要将json字符串解码为数组
  • 在foreach中,您使用了对象属性访问语法,并且我已将其更改为数组访问权限($ val-> id ... $ val [' id'])
  

我的方法不适用于子条目吗?

不喜欢你拥有它。你必须测试你正在迭代的东西, 如果它是一个字符串,int,数组。考虑嵌套等 我已经重新分配$ inventory以使迭代内部数组更容易,让你更接近值

来源:

// JSON string
$json = '{
    "response": {
        "count": 62,
        "inventory": [
            {
                "id": 10,
                "style": 982
            },
            {
                "id": 20,
                "style": 0
            },
            {
                "id": 30,
                "style": 1
            }
        ]
    }}
';

// debugging
var_dump($json, json_decode($json, true));

// decode json to array
$data = json_decode($json, true);

// prepare iteration

// reassign 
$inventory = $data['response']['inventory'];

$matching_value = 10;

foreach($inventory as $key => $val)
{
    //var_dump($val);

    if(isset($val['id']) && $val['id'] === $matching_value)
    {
      echo 'The ID: ' . $val['id'];
      echo 'The Style' . $val['style'];
    }
}

输出: The ID: 10The Style982