从JSON获得PHP的价值

时间:2013-08-02 10:33:09

标签: php json

我需要获取"label""name"的对象信息,其中value=true位于PHP变量中而不是value=false

这个JSON数组是如何完成的?

如果我创建JSON的var_dump,我得到这个:

array(8) {
  [0]=>
  object(stdClass)#8 (3) {
    ["label"]=>
    string(4) "Name"
    ["name"]=>
    string(7) "txtName"
    ["value"]=>
    bool(true)
  }
  [1]=>
  object(stdClass)#9 (3) {
    ["label"]=>
    string(6) "E-mail"
    ["name"]=>
    string(8) "txtEmail"
    ["value"]=>
    bool(true)
  }
   [2]=>
  object(stdClass)#10 (3) {
    ["label"]=>
    string(12) "Phone Number"
    ["name"]=>
    string(8) "txtPhone"
    ["value"]=>
    bool(false)
  }
  [3]=>
  object(stdClass)#11 (3) {
    ["label"]=>
    string(19) "Mobile Phone Number"
    ["name"]=>
    string(14) "txtMobilePhone"
    ["value"]=>
    bool(false)
  }
}

3 个答案:

答案 0 :(得分:5)

$arr = array();
$i = 0;
foreach($json as $key => $items) {
    if($items->value == true) {
       $arr[$i]['label'] = $items->label;
       $arr[$i]['name'] = $items->name;
       $i++;
    }
}

答案 1 :(得分:1)

您可以将其解码为对象或数组,在本例中我使用数组。

首先,您希望获取JSON编码信息并将其解码为PHP数组,您可以使用json_decode()

 $data = json_decode($thejson,true); 

 //the Boolean argument is to have the function return an array rather than an object

然后你可以像普通数组一样遍历它,并构建一个新数组,其中只包含'value'符合你需要的元素:

 foreach($data as $item) {

    if($item['value'] == true) {
        $result[] = $item;
    }     

 }

然后你有阵列

 $result 

随时为您服务。

答案 2 :(得分:0)

简化用户JohnnyFaldo和som提出的建议:

$data = json_decode($thejson, true);
$result = array_filter($data, function($row) {
   return $row['value'] == true;
});