php递归统计父级分数

正文开始

<pre style="background-color:#2b2b2b;color:#a9b7c6;font-family:'宋体';font-size:8.4pt;"><?php $data = [ [ 'uid'=> 111, 'fid'=> 11, 'score'=> 3 ], [ 'uid'=> 11, 'fid'=> 1, 'score'=> 1 ], [ 'uid'=> 1, 'fid'=> 0, 'score'=> 0 ], [ 'uid'=> 2, 'fid'=> 0, 'score'=> 0 ], [ 'uid'=> 21, 'fid'=> 2, 'score'=> 2 ], [ 'uid'=> 22, 'fid'=> 21, 'score'=> 33 ] ]; function diguiArray($array, $pid=0, $sonName = 'sons', $parentName = 'parent_id', $idName = 's_id'){ if(!$array) return []; $newList = array(); //生成所有父级数据 $allParentData = []; //所有父级数据 foreach($array as $k=>$v){ $allParentData[$v[$parentName]][] = $v; } //获取子数据 $getSonData = function ($parentData=[]) use($sonName, $parentName, $idName, $allParentData, &$getSonData) { $tmpSonList = array(); foreach($parentData as $k=>$v){ $pid_ = $v[$idName]; // print_r($parentDataGlobal[$pid_]);exit; if(isset($allParentData[$pid_])) { $v[$sonName] = $getSonData($allParentData[$pid_]); } $tmpSonList[]=$v; } return $tmpSonList; }; //只遍历所有父级 foreach($allParentData[$pid] as $k=>$v){ $pid_ = $v[$idName]; // print_r($parentDataGlobal[$pid_]);exit; if(isset($allParentData[$pid_])) { $v[$sonName] = $getSonData($allParentData[$pid_]); } $newList[]=$v; } return $newList; } $data2 = diguiArray($data, 0, 'sons', 'fid', 'uid'); //求单个item的总分 function sumScore($datum_) { if(isset($datum_['sons']) && count($datum_['sons']) > 0 ) { $count_ = 0; foreach ($datum_['sons'] as $datum__) { //如果子还有子 继续递归求和 否则 直接求子的和 $count_ += $datum__['score']; if(isset($datum__['sons']) && count($datum__['sons']) > 0 ) { $count_ += sumScore($datum__); } } return $count_; } else { return 0; } } foreach ($data2 as &$datum) { $datum['score'] = sumScore($datum); } print_r($data2); </pre><p>结果:</p><p><br /></p><p><pre>Array ( [0] => Array ( [uid] => 1 [fid] => 0 [score] => 4 [sons] => Array ( [0] => Array ( [uid] => 11 [fid] => 1 [score] => 1 [sons] => Array ( [0] => Array ( [uid] => 111 [fid] => 11 [score] => 3 ) ) ) ) ) [1] => Array ( [uid] => 2 [fid] => 0 [score] => 35 [sons] => Array ( [0] => Array ( [uid] => 21 [fid] => 2 [score] => 2 [sons] => Array ( [0] => Array ( [uid] => 22 [fid] => 21 [score] => 33 ) ) ) ) ) ) </pre> <br /></p>

正文结束

PHP接口(interface)和抽象类(abstract) zencart 使用paypal支付 报错unable to get local issuer certificate