
本文档旨在指导开发者如何使用 PHP 从 JSON 数据中移除特定的无效值,例如 "N/A"、"-" 和空字符串。我们将通过一个实际的 API 请求示例,并提供一个递归函数来高效地清理数据,最终输出干净的 JSON 格式数据。
首先,我们需要使用 PHP 的 curl 库从指定的 API 端点获取 JSON 数据。以下代码展示了如何发起一个 GET 请求,并获取返回的 JSON 字符串:
<?php
$ch = curl_init('https://coderbyte.com/api/challenges/json/json-cleaning');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$data = curl_exec($ch);
curl_close($ch);
// 将 JSON 字符串解码为 PHP 数组
$jsonData = json_decode($data, true);
// 打印原始数据(可选,用于调试)
// print_r($jsonData);
?>这段代码首先初始化一个 curl 会话,设置请求的 URL,然后配置选项以确保响应内容作为字符串返回。curl_exec 函数执行请求并获取响应,最后 curl_close 关闭会话。json_decode 函数将返回的 JSON 字符串转换为 PHP 数组,方便后续处理。
接下来,我们需要创建一个递归函数,用于遍历 JSON 数据(PHP 数组),并移除所有值为 "N/A"、"-" 或空字符串的键值对。如果遇到数组类型的元素,则递归调用自身进行处理。
立即学习“PHP免费学习笔记(深入)”;
<?php
function clean_obj($data) {
if (is_array($data)) {
foreach ($data as $key => $val) {
if ($val === 'N/A' || $val === '-' || $val === '') {
unset($data[$key]);
} elseif (is_array($val)) {
$data[$key] = clean_obj($val);
}
}
}
return $data;
}
?>这个 clean_obj 函数接收一个数组作为输入。它遍历数组中的每个元素,如果元素的值等于 "N/A"、"-" 或空字符串,则使用 unset 函数移除该键值对。如果元素的值是一个数组,则递归调用 clean_obj 函数来处理这个子数组。注意这里使用了严格等于 === 来进行比较,以避免类型转换带来的问题。
Easily find JSON paths within JSON objects using our intuitive Json Path Finder
30
现在,我们可以将从 API 获取的 JSON 数据传递给 clean_obj 函数,并输出清理后的结果。
<?php // ... (之前的 curl 代码) ... // 清理数据 $new_array = clean_obj($jsonData); // 输出清理后的数据 echo "<pre>"; print_r($new_array); echo "</pre>"; ?>
这段代码首先调用 clean_obj 函数来清理从 API 获取的 JSON 数据。然后,使用 zuojiankuohaophpcnpre> 标签和 print_r 函数将清理后的数组以易于阅读的格式输出到浏览器。
以下是完整的示例代码,包括从 API 获取数据、清理数据和输出结果:
<?php
function clean_obj($data) {
if (is_array($data)) {
foreach ($data as $key => $val) {
if ($val === 'N/A' || $val === '-' || $val === '') {
unset($data[$key]);
} elseif (is_array($val)) {
$data[$key] = clean_obj($val);
}
}
}
return $data;
}
$ch = curl_init('https://coderbyte.com/api/challenges/json/json-cleaning');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 0);
$data = curl_exec($ch);
curl_close($ch);
$jsonData = json_decode($data, true);
$new_array=clean_obj($jsonData);
echo "<pre>";
print_r($new_array);
echo "</pre>";
?>本文档介绍了如何使用 PHP 从 JSON 数据中移除无效值。通过使用 curl 库获取 JSON 数据,并使用递归函数 clean_obj 清理数据,可以有效地处理来自 API 的 JSON 响应,并获得干净、可用的数据。 请务必根据实际需求调整代码,并添加适当的错误处理和性能优化措施。
以上就是使用 PHP 清理 JSON 数据:移除无效值的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号