提取两个数组的共同键名再此排序

简介: 联表查询两个返回值的处理方法:public static function getUserConsume($period,$character){  $uid=self::getByCharacter($character);  if($uid&&$period){      $userconsum...

联表查询
两个返回值的处理方法:
public static function getUserConsume($period,$character){
  $uid=self::getByCharacter($character);
  if($uid&&$period){
   
   $userconsumescore = self :: getuserconsumescore($period, $uid);
   $userscore = self :: getuserscore($period, $uid);

---------上面返回两个键名相同的二维数组,但是返回字段不同   
   $keys = array_unique (array_merge(array_keys($userconsumescore), array_keys($userscore)));
   //array_keys()获得数组的键名,array_merge()合并数组;如果键名有重复,该键的键值为最后一个键名对应的值(后面的覆盖前面的)。如果数组是数字索引的,则键名会以连续方式重新索引。
    array_unique() 函数移除数组中的重复的值,并返回结果数组。当几个数组元素的值相等时,只保留第一个元素,其他的元素被删除。返回的数组中键名不变
   sort($keys);//获得键名的数组
   $outdates = array();
   $showtotalconsumeaddgx = $showtotalconsumeaddhonor = $showtotaladdhonor = $showtotaladdgx = 0;
//   print_r($userconsumescore);
   //print_r($keys);

//foreach 循环日期
   foreach($keys as $date){
    //echo $date . "/n<br />";
    $totaladdhonor = isset($userscore[$date]['totaladdhonor']) ? $userscore[$date]['totaladdhonor'] : 0;
    $showtotaladdhonor += $totaladdhonor;
    
    $totaladdgx = isset($userscore[$date]['totaladdgx']) ? $userscore[$date]['totaladdgx'] : 0;
    $showtotaladdgx += $totaladdgx;
    
    $totalconsumeaddgx = isset($userconsumescore[$date]['addgx']) ? $userconsumescore[$date]['addgx'] : 0;
    $showtotalconsumeaddgx += $totalconsumeaddgx;
    
    $totalconsumeaddhonor = isset($userconsumescore[$date]['addhonor']) ? $userconsumescore[$date]['addhonor'] : 0;
    $showtotalconsumeaddhonor  += $totalconsumeaddhonor;
    //方便添加字段,和查阅
    $outdates[$date] = array(
          'time'=>$date,
          'totaladdhonor' => $totaladdhonor,
          'showtotaladdhonor' => $showtotaladdhonor,
          'totaladdgx' => $totaladdgx,
          'showtotaladdgx' => $showtotaladdgx,
          'totalconsumeaddgx' => $totalconsumeaddgx,
          'showtotalconsumeaddgx' => $showtotalconsumeaddgx,
          'totalconsumeaddhonor' => $totalconsumeaddhonor,
          'showtotalconsumeaddhonor' => $showtotalconsumeaddhonor );      
   }
   }
  
  return $outdates;
 }

 

 

 

常规的方法:

 

 

public static function getUserConsume($period,$character){
  $uid=self::getByCharacter($character);
  if($uid&&$period){
   
   $userconsumescore = self :: getuserconsumescore($period, $uid);
   $userscore = self :: getuserscore($period, $uid);
   
   $keys = array_unique (array_merge(array_keys($userconsumescore), array_keys($userscore)));
   sort($keys);
   foreach($keys as $date){
     
    $return[$date]['time']=$userconsumescore[$date]['time'];
    $return[$date]['totaladdhonor']=$userscore[$date]['totaladdhonor'];
   $return[$date]['showtotaladdhonor'] +=$userscore[$date]['totaladdhonor'];
  
   $return[$date]['totaladdgx']=$userscore[$date]['totaladdgx'];
   $return[$date]['showtotaladdgx'] +=$userscore[$date]['totaladdgx'];
  
   $return[$date]['totalconsumeaddgx'] =$userconsumescore[$date]['addgx'];
   $return[$date]['showtotalconsumeaddgx'] +=$userconsumescore[$date]['addgx'];
   $return[$date]['totalconsumeaddhonor'] =$userconsumescore[$date]['addhonor'];
   $return[$date]['showtotalconsumeaddhonor'] +=$userconsumescore[$date]['addhonor'];
    }
  
  return $return;
 }
 }

 

目录
相关文章
|
11天前
如何对列表里面的字典排序
如何对列表里面的字典排序
|
5月前
|
存储 索引
DAY-2 | 哈希思想:求字符串包含的字符集合
这是一个关于代码实现的问题,主要展示了两种利用哈希思想去除字符串中重复字符的方法。第一种方法使用了`boolean[] flg`数组来标记字符是否出现过,遍历字符串时,如果字符未出现则添加到结果并标记为已出现。第二种方法使用`char[] ch`数组直接存储字符出现状态,先遍历一次字符串记录出现过的字符,再遍历一次输出未标记的字符。
27 0
|
5月前
|
机器学习/深度学习 存储 搜索推荐
对字典进行排序与为何需要对字典排序
对字典进行排序与为何需要对字典排序
35 0
|
5月前
|
存储
函数——使用字典存储查找人名
函数——使用字典存储查找人名
|
PHP
php数组学习(1):固定格式的字符串分割成数组后内容去重
php数组学习(1):固定格式的字符串分割成数组后内容去重
49 0
|
JSON PHP 数据格式
php数组学习(2):判断并过滤JSON字符串中不包含指定键名的解决方案
php数组学习(2):判断并过滤JSON字符串中不包含指定键名的解决方案
71 0
|
JSON 数据格式 Python
一日一技:包含非hashable元素的列表如何去重并保持顺序?
一日一技:包含非hashable元素的列表如何去重并保持顺序?
105 0
字符串&列表&元组&字典之间互转
字符串&列表&元组&字典之间互转
|
JSON 数据格式
将字符串按指定的符号分割为集合或数组
将字符串按指定的符号分割为集合或数组
176 0
将字符串按指定的符号分割为集合或数组