目前支持多层级展示啦,很爽;
因为我的免费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 示例时按照特定路径组织数据。