我在使用JSON对象和PHP时遇到问题。 Edited_Players JSON对象可以有一个或多个子对象,如下所示
这里有2个子对象
"Team_Updates": {
"Edited_Players": [
{
"position": "flanker",
"last_name": "mowbrayfg",
"id": 3,
"first_name": "fchris",
"weight": "weight",
"height": "high"
},
{
"id": 4,
"last_name": "gg",
"position": "gg",
"first_name": "ffgyvvyvy",
"height": "cttvyv",
"weight": "gg"
}
]
},
这里有1个单个子对象:
Team_Updates": {
"Edited_Players":
{
"position": "flanker",
"last_name": "mowbrayfg",
"id": 3,
"first_name": "fchris",
"weight": "weight",
"height": "high"
}
}
问题是当我执行下面的代码时,如果Edited_Players JSON对象的大小为2,则for循环将执行两次,这是正确的。但是如果Edited_Players JSON对象的大小为1,则循环执行6次。
这是因为如果Edited_Players> 1然后它由一个数组填充,但如果= 1则它只计算其中的单个对象。
如何进行更改以使代码将{position,last_name,id,first_name,weight,height]视为1个对象?
if(isset($editedPlayersObj)){
$epIDArray = array();
$epFnameArray = array();
$epSnameArray = array();
$epHieghtArray = array();
$epWeightArray = array();
$epPosArray = array();
for ($x=0; $x<count($editedPlayersObj); $x++)
{
$epFnameArray[$x] = $editedPlayersObj[$x]['first_name'];
$epSnameArray[$x] = $editedPlayersObj[$x]['last_name'];
$epIDArray[$x] = $editedPlayersObj[$x]['id'];
$epHieghtArray[$x] = $editedPlayersObj[$x]['weight'];
$epWeightArray[$x] = $editedPlayersObj[$x]['height'];
$epPosArray[$x] = $editedPlayersObj[$x]['position'];
// insert into database the above
}
答案 0 :(得分:2)
如果我理解了这个问题,那么使用json_decode可能会更好。这将允许您作为对象访问每个返回值。
答案 1 :(得分:2)
问题在于构造的JSON。我认为应该总是包含一个或多个`Edited_Players'对象的数组。在你的第二种情况下没有,你最终会迭代所提供的单个对象的属性。
如果您无法控制JSON,那么您应该检测Edited_Players
的值是数组还是对象,并相应地使用它。