You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用PHP统计JSON文件中特定数字的出现次数?(附代码报错求助)

解决PHP统计JSON中指定用户ID出现次数的问题

看起来你在遍历JSON数据时踩了几个小坑,咱们一步步来修正:

错误原因分析

  1. 遍历对象错误:json_decode返回的$data是一个包含多个用户对象的数组,而非直接带roles键的对象。你直接写foreach ($data["roles"] as $value),相当于去数组里找不存在的roles键,自然会报未定义数组键的错误,后续foreach也因为拿到null参数报错。
  2. 统计目标偏差:你要统计的是用户ID848088079562571797,但代码里却在判断roles数组里的另一个ID,完全偏离了目标。
  3. 类型匹配问题: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.29 17:37:47