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

PHP中如何动态生成字符串键名二维数组 按目标URL对父URL分组

错误写法原因说明

  • $allLinks[$destination] .= [$parent]:.=是PHP的字符串拼接运算符,仅适用于字符串操作,用于数组会触发强制类型转换,得到异常结果,不适用当前场景。
  • array_push($allLinks[$destination], $parent):该函数要求传入的第一个参数必须是已初始化的数组,如果$allLinks中不存在$destination对应的键,直接调用会抛出警告,无法正常生成子数组。

正确实现代码

核心逻辑是每次处理行数据时,先对目标URL对应的子数组做初始化判断,再追加父页面URL:

// 初始化外层存储数组
$allLinks = [];

// 此处的$rows为你按行拆分后的URL关联列表数组
foreach ($rows as $row) {
    // 按|拆分每行内容,同时去除两端多余空格
    [$parent, $destination] = array_map('trim', explode('|', $row));
    
    // 若目标URL对应的键不存在,先初始化为空数组
    if (!isset($allLinks[$destination])) {
        $allLinks[$destination] = [];
    }
    // 追加父页面URL到对应子数组
    $allLinks[$destination][] = $parent;
}

如果你的运行环境支持PHP7.4及以上版本,可以用NULL合并赋值运算符简化初始化判断,替换上面的if判断代码即可:

$allLinks[$destination] ??= [];

执行完成后打印$allLinks即可得到你需要的结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 00:36:01