我正在计算行数是我的JSON结果 但是我也在尝试计算结果中的项目数。
行计数有效,但项目计数无效。 遇到错误:尝试在$ FLCount行上获取非对象的属性
代码在下面
// Counts The Rows - WORKS
$row = $obj->response->result->Accounts->row;
$countRows = count($row);
// Counts The FL Items ( Doesn't Work )
$FLCount= $obj->response->result->Accounts->row->FL;
$countItems = count($FLCount);
JSON结果代码段
{
"response": {
"result": {
"Accounts": {
"row": [
{
"no": "1",
"FL": [
{
"val": "ITEM 1",
"content": "XX"
},
{
"val": "ITEM 2",
"content": "XX"
},
{
"val": "ITEM 3",
"content": "XX"
}
]
}
]
}
}
}
}
答案 0 :(得分:1)
出现错误是因为$obj->response->result->Accounts->row
不是对象而是行数组。
要计算所有项目,无论行是什么,您都可以循环浏览各行,然后累加每行中的项目数:
// Counts The Rows - WORKS
$rows = $obj->response->result->Accounts->row;
$countRows = count($rows);
// Counts The FL Items ( Doesn't Work )
$countItems = 0;
foreach ($rows as $row) {
$countItems += count($row->FL);
}
答案 1 :(得分:0)
(编辑:不幸的是,我误解了您的要求,我的答案解决了将其计入JAVASCRIPT
而不是php
的解决方案)
一个是array
,另一个是object
。在这种情况下,您可以使用:
element.length
代替
count(element)
您的实际问题由用户@niiwig很好地表达了!但是,要使其更短,请使用:
var amount=0; JSON.parse(YOUR_RESPONSE).response.result.Accounts.row.every((obj) => amount += obj.FL.length );
和amount
变量将具有正确的数字。
答案 2 :(得分:0)
$FLCount= $obj->response->result->Accounts->row[0]->FL;
$countItems = count($FLCount);