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

如何过滤JSON数据并筛选status为TF的条目?PHP代码修改需求

实现JSON数据按status过滤并统计数量

没问题,我来帮你调整代码,实现只保留status为TF的条目,同时统计过滤后的数量。先给你完整的可运行代码,再一步步解释:

<?php
// 读取JSON文件内容
$jsonResult = file_get_contents('1.json');
if (!$jsonResult) {
    die("无法读取JSON文件");
}

// 将JSON解码为关联数组(第二个参数传true更方便后续数组操作)
$contentJson = json_decode($jsonResult, true);
// 检查解码是否成功(注意原JSON里有多余的尾逗号,会导致解码失败,需要先修正)
if (json_last_error() !== JSON_ERROR_NONE) {
    die("JSON解码失败:" . json_last_error_msg());
}

// 过滤出status严格等于"TF"的条目
// 加isset判断是为了避免部分条目缺失status字段导致报错
$filteredItems = array_filter($contentJson['data'], function($item) {
    return isset($item['status']) && $item['status'] === 'TF';
});

// 获取过滤后的条目数量
$filteredCount = count($filteredItems);

// 后续可以用$filteredItems来渲染表格,比如:
echo "<table border='1'>";
echo "<tr><th>ID</th><th>Weather</th><th>Status</th></tr>";
foreach ($filteredItems as $item) {
    echo "<tr>";
    echo "<td>" . htmlspecialchars($item['id']) . "</td>";
    echo "<td>" . htmlspecialchars($item['weather'] ?? 'NULL') . "</td>";
    echo "<td>" . htmlspecialchars($item['status']) . "</td>";
    echo "</tr>";
}
echo "</table>";

// 输出过滤后的数量
echo "<p>过滤后共" . $filteredCount . "条数据</p>";
?>

关键说明:

  1. JSON语法修正:你的原JSON文件里每个对象末尾有多余的尾逗号(比如"status": "TT", },),这不符合标准JSON语法,会导致json_decode失败,需要先去掉这些多余的逗号,确保JSON格式正确。
  2. 关联数组解码:json_decode第二个参数传true,会把JSON对象转成PHP关联数组,比操作对象更直观灵活。
  3. 安全过滤:用array_filter配合匿名函数实现过滤,加isset($item['status'])是为了兼容可能缺失status字段的条目,避免报错。
  4. 数量统计:直接用count()获取过滤后数组的长度即可。
  5. HTML渲染安全:用htmlspecialchars()转义输出内容,避免XSS风险。

内容的提问来源于stack exchange,提问作者aynaz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:25:05