如何使用PHP统计JSON文件中特定数字的出现次数?(附代码报错求助)
解决PHP统计JSON中指定用户ID出现次数的问题
看起来你在遍历JSON数据时踩了几个小坑,咱们一步步来修正:
错误原因分析
- 遍历对象错误:
json_decode返回的$data是一个包含多个用户对象的数组,而非直接带roles键的对象。你直接写foreach ($data["roles"] as $value),相当于去数组里找不存在的roles键,自然会报未定义数组键的错误,后续foreach也因为拿到null参数报错。 - 统计目标偏差:你要统计的是用户ID
848088079562571797,但代码里却在判断roles数组里的另一个ID,完全偏离了目标。 - 类型匹配问题:JSON里的ID是字符串类型,直接用数字比较可能触发隐形类型转换,最好用严格的字符串匹配。
修正后的代码
<?php // 读取JSON文件内容 $jsonData = file_get_contents("data.json"); // 解码为关联数组 $data = json_decode($jsonData, true); $targetUserId = "848088079562571797"; $count = 0; // 遍历数组中的每一条用户数据 foreach ($data as $userItem) { // 检查当前条目里的用户ID是否匹配目标值 if ($userItem["user"]["id"] === $targetUserId) { $count++; } } echo "目标用户ID出现次数:" . $count; ?>
代码说明
- 遍历的是
$data数组本身,每个元素是一条完整的用户数据对象 - 直接访问对象层级里的
["user"]["id"]进行匹配,精准定位到目标字段 - 用
===做严格比较,确保类型和值都完全匹配,避免潜在的类型转换问题
运行这段代码后,会输出目标用户ID出现次数:2,正好对应你JSON文件里的两条匹配条目。
内容的提问来源于stack exchange,提问作者E. Gadd
相关产品推荐
相关产品推荐

