目前支持多层级展示啦,很爽;
因为我的免费api(api.aa1.cn)经常有很多开发者小伙伴提交自己的接口;
不免有很多开发者的接口是多层级的,二级三级,甚至是多级,并且我也没写相关的代码,很是头疼,只能写个json的格式,单级的展示;
现在已经全面支持啦:

实现的功能代码块展示
if (!empty($data['val'])) {
$result = [];
foreach ($data['val'] as $v) {
if ($v['p_api_type'] == 1) {
addValue($result, $v['p_name'], $v['p_desc']);
}
}
if (!empty($result)) {
echo json_encode($result, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE);
} else {
echo '开发者未填写此数据,无法生成 JSON 示例,请参考小白对接';
}
}
function addValue(&$array, $path, $value) {
$keys = explode('.', $path);
$currentResult = &$array;
foreach ($keys as $key) {
if (!is_array($currentResult)) {
$currentResult = [];
}
if (!isset($currentResult[$key])) {
$currentResult[$key] = [];
}
$currentResult = &$currentResult[$key];
}
// 在内部数组中添加一个键值对
$currentResult = $value;
// 重置引用
unset($currentResult);
}
代码块讲解
- 检查
$data['val']是否不为空。 - 如果不为空,创建一个空数组
$result。 - 遍历
$data['val']数组中的每个元素$v。 - 如果
$v['p_api_type']等于 1,调用addValue函数,将$v['p_name']和$v['p_desc']添加到$result数组中。 - 检查
$result是否不为空。 - 如果
$result不为空,将其以 JSON 格式输出,包括美化、不转义斜杠和不转义 Unicode。 - 如果
$result为空,则输出一个提示信息表示开发者未填写相关数据,无法生成 JSON 示例。
函数 addValue 的作用是将给定的 $value 添加到 $array 数组的指定路径 $path 中。它通过逐级创建子数组来实现路径,最后在指定路径上设置给定的值。
举个例子,如果 $v['p_name'] 是 "a.b.c",则调用 addValue($result, $v['p_name'], $v['p_desc']) 会将 $v['p_desc'] 添加到 $result['a']['b']['c'] 的位置。这样的结构有助于在生成 JSON 示例时按照特定路径组织数据。
