如何在PHP Curl中筛选数据并统计年龄≥50的条目数量
解决方案
以下是完整的实现代码,包含数据获取和统计逻辑:
<?php // 发起CURL请求获取数据 $ch = curl_init('你的目标URL'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HEADER, 0); $response = curl_exec($ch); curl_close($ch); // 解析JSON响应 $responseArray = json_decode($response, true); // 检查data字段是否存在 if (!isset($responseArray['data'])) { echo 0; exit; } // 清理并格式化data字符串 $rawDataString = trim($responseArray['data']); // 替换所有连续空白(含换行)为单个空格 $formattedString = preg_replace('/\s+/', ' ', $rawDataString); // 拆分为单个键值对条目 $entries = explode(', ', $formattedString); $qualifiedCount = 0; // 遍历条目统计符合条件的age foreach ($entries as $entry) { // 拆分键和值,限制拆分次数为2避免值中含=的情况 list($field, $value) = explode('=', $entry, 2); if ($field === 'age') { $age = (int)$value; if ($age >= 50) { $qualifiedCount++; } } } // 输出最终统计结果 echo $qualifiedCount; ?>
关键逻辑说明
- JSON解析与校验:先将CURL返回的JSON字符串转为关联数组,同时检查
data字段是否存在,避免因响应格式异常导致报错。 - 字符串预处理:由于原始
data字符串包含换行和不规则空格,用正则表达式统一替换为单个空格,确保后续拆分的准确性。 - 条目遍历与统计:将格式化后的字符串拆分为单个键值对,遍历过程中筛选出
age字段,转为整数后判断是否≥50,符合条件则计数递增。
额外说明
- 代码中使用
explode('=', $entry, 2)限制拆分次数,避免遇到值中包含=符号的极端情况(虽然当前场景下age是整数,但保留该逻辑可提升鲁棒性)。 - 若
data字段为空或不存在,直接输出0,保证程序的容错性。
内容的提问来源于stack exchange,提问作者Praff
相关产品推荐
相关产品推荐

