我有以下JSON对象:
{
"screen": 1,
"parameters": {
"title": "Fill in the form:",
"values": [
{
"id": 13,
"type": 2,
"name": "A",
"label": "Lorem ipsum",
"value": 10
},
{
"id": 14,
"type": 2,
"name": "B",
"label": "Lorem ipsum",
"value": 20
}
]
}
}
在代码中,我使用$screen = /*object*/; $screen->parameters->values
访问值。
是否有快速方法可以检查答案A和B的值是否已填写?我买了这样的东西:
if(isset(A) && isset(B)) { ... }
对于那些感兴趣的人,我使用laravel 5,也许有一种方法呢?
看起来我需要一个foreach,但我宁愿在这种情况下避免使用它们......
答案 0 :(得分:1)
不,不是当前的结构。但是,您可以稍微更改结构以支持此功能。您可以使用对象而不是数组,并将名称用作键:
{
"screen": 1,
"parameters": {
"title": "Fill in the form:",
"values": {
"A":{
"id": 13,
"type": 2,
"label": "Lorem ipsum",
"value": 10
},
"B":{
"id": 14,
"type": 2,
"label": "Lorem ipsum",
"value": 20
}
]
}
}
然后您可以使用isset方法。
isset( $screen->parameters->values->A );
你仍然可以遍历这些值,因为你可以通过将true传递给json_decode作为第二个参数来转换关联数组中的整个事物。我一个人不是我自己的答案的忠实粉丝,可能只是循环,但它仍然可以回答你的问题。
编辑:我忘记了如果你将json_decode添加为true,你也可以像这样访问你的属性:
isset( $screen['parameters']['values']['A'] );