php与mysql表中如何求递归求和汇总?

php与mysql表中如何求递归求和汇总?,第1张

function sumShuzi(&$tree, &$updateData = array()) {

  $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()  就可以获取树形菜单


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5909515.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-08
下一篇 2023-03-08

发表评论

登录后才能评论

评论列表(0条)

保存