我需要获取"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)
}
}
答案 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;
});