首页 > 解决方案 > 合并两个数组并得到一个新数组

问题描述

我有一个这样的关联数组:我需要合并两个数组和最后一个 hr rating 我需要添加 hrrating1 =,hr rating 2 = 像这样

 array (
  0 => 
  array (
    'skill_name' => 'JDK (Java Development Kit)',
    'desc' => '',
    'req_rating' => '2',
    'user_rating' => '3',
    'hrRating' => '2',
  ),
  1 => 
  array (
    'skill_name' => 'Java Servlets',
    'desc' => '',
    'req_rating' => '4',
    'user_rating' => '3',
    'hrRating' => '3',
  ),
  2 => 
  array (
    'skill_name' => 'JDK (Java Development Kit)',
    'desc' => '',
    'req_rating' => '2',
    'user_rating' => '3',
    'hrRating' => '2',
  ),
  3 => 
  array (
    'skill_name' => 'Java Servlets',
    'desc' => '',
    'req_rating' => '4',
    'user_rating' => '3',
    'hrRating' => '4',
  ),
)  

需要的输出:

array (
          0 => 
          array (
            'skillName' => 'JDK',
            'comments' => '',
            'jobRating' => '2',
            'userRating' => '3',
            'skillGap' => '-1',
            'hrRating1' => '7',
            'hrRating2' => '2',

          ),
          1 => 
          array (
            'skillName' => 'Java Servlets',
            'comments' =>'',
            'jobRating' =>'4',
            'userRating' =>'3',
            'skillGap' => '1',
            'hrRating1' => '2',
            'hrRating2' => '3',

          ),
        ) 

我需要将两个数组与最后一列结合起来 hrRating 应该不同,例如 hrRating1 和 hrrating@ 这样有什么帮助吗????

标签: phparrayslaravel

解决方案


更新(单个数组输入)
我不知道我是否可以skill_name用作数组键(可能不是),因此$tmp_skill$tmp_index.

function process_collection($data) {

    $tmp_skill = [];
    $tmp_index = [];
    $result = [];
    foreach ($data as $k => $item) {
        $skill = $item['skill_name'];
        echo $skill.'<br>';
        $idx = array_search($skill, $tmp_skill);
        if ($idx === false) {
            //$result[$idx]['_ratings'] = $item['hrRating'];
            //continue;
            $idx = count($tmp_skill);
            $tmp_index[] = $idx;
            $tmp_skill[] = $skill;
            $result[$idx] = $item;
            $result[$idx]['_ratings'] = [];
        }
        $result[$idx]['_ratings'][] = $item['hrRating'];
    }  

    // conversion array of ratings to individual values 'hrRating1', 'hrRating2', ...
    foreach($result as &$item) {
        $i = 0;
        foreach( $item['_ratings'] as $rate)
            $item['hrRating' . (++$i)] = $rate;
        unset($item['_ratings']);
        unset($item['hrRating']);
    }
    return $result;
}

推荐阅读