$sum = 0
// foreach($tree as $key => $item) { //这句话有毒
foreach($tree as $key => &$item) {
if(isset($item['children'])) {
$oldPshuzi = $tree[$key]['Pshuzi']
$tree[$key]['Pshuzi'] = sumShuzi($item['children'], $updateData)
if($oldPshuzi != $tree[$key]['Pshuzi']) {
$updateData[$item['id']] = array($tree[$key]['Pshuzi'], $tree[$key]['Pname_ch'])
}
}
$sum += $tree[$key]['Pshuzi']
}
return $sum
}
$tree = json_decode('[{"id":"1","Pid":"0","Pname_ch":"\u6e20\u9053\u90e8","Pshuzi":"1638000","children":[{"id":"4","Pid":"1","Pname_ch":"\u9500\u552e\u4e8c\u90e8","Pshuzi":"895000","children":[{"id":"13","Pid":"4","Pname_ch":"\u5468\u7ecf\u7406","Pshuzi":"28","children":[{"id":"28","Pid":"13","Pname_ch":"\u6e56\u5357","Pshuzi":"158000"},{"id":"35","Pid":"13","Pname_ch":"\u65b0\u7586","Pshuzi":"19000"}]},{"id":"40","Pid":"4","Pname_ch":"\u9648\u7ecf\u7406","Pshuzi":"5000"}]}]}]', true)
//$tree是具有父子关系的数据树
sumShuzi($tree, $updateData)
foreach ($updateData as $id => $item) {
$sql = "update your_table set Pshuzi={$item[0]} where id={$id}"
mysqli_query($db, $sql) //$db是你的数据库连接结果
}
没懂你的CID,和scid 是什么。
无限分类是无限的树形结构么?
根据无限树形结构说一下。一般情况下 是用递归调用来处理的。字段中 用id 和parentid 两个字段。 假设有一个函数 fetch是取mysql 数据的。简单写一个函数
function getdata($parentid){
$tree=fetch("parentid = {$parentid}")
foreach($tree as $k=>$v){
$tree[$k]['children']=getdata($v['id'])
}
return $tree
}
调用$tree=getdata(0)
$tree 就是树形的。
当然 如果有用框架估计更简单点。比如laravel 。定义一个$tree的模型,表中有id,和parentid两字段。模型中新增两个函数
public function childrentree()
{
return $this->hasMany(get_class($this), 'parentid', 'id')
}
public function children()
{
return $this->childrentree()
}
然后使用
tree::with(["children"])->where('parentid', 0)->get() 就可以获取树形菜单
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)