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

D3.js初学者:将PHP生成的JSON用于构建可折叠树图表

改造D3.js可折叠树以使用本地PHP生成的JSON

嘿,很高兴帮你搞定这个问题!你说得完全没错,只需要替换掉示例里异步加载外部JSON的那段代码就行——毕竟你已经通过PHP把数据直接注入到页面里了,根本不用再发额外的请求啦。

具体修改步骤

原来的示例用d3.json()异步拉取flare.json文件,现在我们直接用你已经定义好的JsonConvert变量,把整块异步代码替换成下面的内容:

// 直接用PHP生成的JSON变量作为树的根节点
var root = JsonConvert;
// 设置节点初始位置(和示例逻辑保持一致)
root.x0 = height / 2;
root.y0 = 0;

// 折叠子节点的工具函数(和示例逻辑相同)
function collapse(d) {
  if (d.children) {
    d._children = d.children;
    d._children.forEach(collapse);
    d.children = null;
  }
}

// 默认折叠根节点的所有子节点(想默认展开就删掉这行)
root.children.forEach(collapse);
// 初始化渲染树结构
update(root);

关键注意事项

  • JSON结构要匹配:你的JsonConvert数据结构得和示例里的flare.json对齐——每个节点需要有name字段,子节点要放在children数组里。如果你的数据用了不同的字段名(比如用title代替name,subItems代替children),记得在D3的渲染代码里对应修改,比如把d.name改成d.title,d.children改成d.subItems。
  • 初始状态可调整:示例默认是折叠所有子节点的,要是希望页面加载时根节点的子节点就展开,直接删掉root.children.forEach(collapse);这行即可。

这样改完之后,你的D3可折叠树就能完美用上PHP返回的数据啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:10:24