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

递归搜索层级数组并根据ID构建URL路径

实现多维层级数组的URL路径生成函数

给定树形结构的多维数组,我们需要实现一个函数,传入数组和目标节点的id,生成从根节点到该目标节点的完整URL路径(格式如/Contact/Contact-County/Contact-Town-1/)。

完整实现代码

function getlink($array, $id) {
    foreach ($array as $node) {
        // 找到目标节点,返回带首尾斜杠的当前节点link
        if ($node['id'] == $id) {
            return '/' . $node['link'] . '/';
        }
        // 当前节点有子节点时,递归查找子树
        if (!empty($node['children'])) {
            $childPath = getlink($node['children'], $id);
            // 子树中找到目标路径时,拼接当前节点的link后返回
            if ($childPath !== '') {
                return '/' . $node['link'] . $childPath;
            }
        }
    }
    // 未匹配到目标id,返回空字符串
    return '';
}

代码逻辑说明

  1. 遍历节点:循环处理传入数组中的每个节点
  2. 匹配目标节点:如果当前节点id与目标id一致,直接返回带首尾斜杠的节点link
  3. 递归查找子树:若当前节点存在非空的children数组,递归调用函数处理子节点
  4. 路径拼接:递归返回有效路径时,说明目标节点在当前节点的子树中,将当前节点link与子路径拼接后返回
  5. 未找到处理:遍历结束仍未匹配到目标id,返回空字符串

测试示例

用你提供的数组测试:

$tree = array (
  0 => 
  array (
    'id' => '1',
    'p_pag' => '0',
    'link' => 'Contact',
    'children' => 
    array (
      0 => 
      array (
        'id' => '2',
        'p_pag' => '1',
        'link' => 'Contact-County',
        'children' => 
        array (
          0 => 
          array (
            'id' => '3',
            'p_pag' => '2',
            'link' => 'Contact-Town-1',
            'children' => 
            array (
            ),
          ),
        ),
      ),
    ),
  ),
);

echo getlink($tree, '3'); // 输出:/Contact/Contact-County/Contact-Town-1/

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:50:48