我搜索了很多,但我找到了一些方法来查找我的JSON数组的长度。我试过了:
count
json.length
但这些返回1,而不是实际长度。我想用PHP来展示它。
我的json是:
$huge = '[{"location":[{"building":["Default Building"],"name":"Default Location"}],"name":"Default Organization"},{"location":[{"building":["test_loc1_building1","test_loc1_building2"],"name":"test location1"},{"building":["test_loc2_building2"],"name":"test location2"}],"name":"test Organization"}]';
如何在JSON数组中找到对象的数量?
答案 0 :(得分:20)
您需要decode the json对象,然后计算其中的元素..
$json_array = json_decode($json_string, true);
$elementCount = count($json_array);
答案 1 :(得分:5)
在对数据进行任何处理之前,您需要先解码到PHP数组中。
尝试:
$hugeArray = json_decode($huge, true); // Where variable $huge holds your JSON string.
echo count($hugeArray);
如果需要计算到较低的深度,则需要遍历数组。
例如,如果要计算下一层中元素的数量,可以执行以下操作:
foreach ($hugeArray as $key => $value) {
echo $key.' - '.count($value);
}
然而,这并不一定有意义,因为它取决于您想要计算什么,您的目标是什么。无论实际数字的含义如何,此块仅计算下面1层元素的数量。
答案 2 :(得分:0)
首先解码您的json
,然后在其上使用count
。
$huge='[{"location":[{"building":["Default Building"],"name":"Default Location"}],"name":"Default Organization"},{"location":[{"building":["test_loc1_building1","test_loc1_building2"],"name":"test location1"},{"building":["test_loc2_building2"],"name":"test location2"}],"name":"test Organization"}]';
$arr = json_decode($huge,true);
echo count($arr);
答案 3 :(得分:0)
对象(一个无序的键集合:带有':'字符的值对,用于分隔键和值,用逗号分隔并用花括号括起来; ...)
所以,你所要做的只是计算打开的花括号。
substr_count($huge , '{');
但是......如果你在json中存储一些带有'{'的字符串,你就无法做到。这样你就必须编写自己的简单解析器或正则表达式。
但是... json_decode的简易方法。如果你想在json中计算所有对象,可以使用递归函数。
function count_objects($value)
{
if (is_scalar($value) || is_null($value))
$count = 0;
elseif (is_array($value))
{
$count = 0;
foreach ($value as $val)
$count += count_objects($val);
}
elseif (is_object($value))
{
$count = 1;
$reflection_object = new \ReflectionObject($value);
foreach ($reflection_object->getProperties() as $property)
{
$count +=count_objects($property->getValue($value));
}
}
return $count;
}
$huge = '[{"location":[{"building":["Default Building"],"name":"Default Location"}],"name":"Default Organization"},{"location":[{"building":["test_loc1_building1","test_loc1_building2"],"name":"test location1"},{"building":["test_loc2_building2"],"name":"test location2"}],"name":"test Organization"}]';
echo count_objects(json_decode($huge));
答案 4 :(得分:0)
我们可以使用“ .sizeof()”函数。 所以