您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

数组重新组合

2024/11/24 11:01:14发布17次查看
1,如何将数组arr1转化成arr2?
arr1 = [
['tracking1','abc@qq.com','80'],['tracking1','abc@qq.com','50'],['tracking2','efg@qq.com','60'],['tracking2','efg@qq.com','30'],

];
arr2 = [
['tracking1','abc@qq.com',['80','50']],['tracking2','efg@qq.com',['60','30']],

];
回复内容: 1,如何将数组arr1转化成arr2?
arr1 = [
['tracking1','abc@qq.com','80'],['tracking1','abc@qq.com','50'],['tracking2','efg@qq.com','60'],['tracking2','efg@qq.com','30'],

];
arr2 = [
['tracking1','abc@qq.com',['80','50']],['tracking2','efg@qq.com',['60','30']],

];
思路很简单,就是把数组的第一和第一列的值作为一个唯一key写入,感觉楼上代码有点多,简洁代码如下
$arr1 = [ ['tracking1','abc@qq.com','80'], ['tracking1','abc@qq.com','50'], ['tracking2','efg@qq.com','60'], ['tracking2','efg@qq.com','30'],];$arr2 = [];foreach ($arr1 as $data) { list($account,$mail,$val) = $data; isset($arr2[$account.$mail]) || $arr2[$account.$mail]=[$account,$mail,[]]; array_push($arr2[$account.$mail][2],$val);}$arr2 = array_values($arr2);var_dump($arr2);
我给个思路,先遍历判断arr1[0]是否一样,一样就往一个新数组中插入,在这基础判断[1]是否相同,相同就插入值,不同则合并成一个数组,以此类推
$arr = [['tracking1','abc@qq.com','80'],['tracking1','abc@qq.com','50'],['tracking2','efg@qq.com','60'],['tracking2','efg@qq.com','30']];$finalarr = [[[]]];$mailarr =[];foreach ($arr as $k=>$v){ $mailkey = array_search($v[1],$mailarr); if($mailkey!==false){ array_push($finalarr[$mailkey][2],$v[2]); }else{ $finalarr[$k] = $v; $finalarr[$k][2] = [$v[2]]; $mailarr[$k]=$v[1]; }}$finalarr = array_values($finalarr);var_dump($finalarr);
14行功能代码,不要太简单。
说下我的思路,题主这个数组,拆分开其实就是两个部分,每个数组里的v0、v1值,和v2值。
$new = array(); $flag = 1;foreach ($arr as $key => $value) { $newss[$value[0].'-'.$value[1]][] = $value[2]; //取出重复小标0 1的值 $news = array($value[0], $value[1]); foreach ($new as $k => $v) { if(!array_diff($v,$news )) { //如果 $flag = 2; break; } } if($flag == 1) { $new[] = array($value[0], $value[1]); } $flag = 1;}foreach ($new as $key => $value) { $new[$key][2] = $newss[$value[0].'-'.$value[1]];}var_dump($new);exit;
$arr1 = [ ['tracking1','abc@qq.com','80'], ['tracking1','abc@qq.com','50'], ['tracking2','efg@qq.com','60'], ['tracking2','efg@qq.com','30'], ]; $arr2 = [ ['tracking1','abc@qq.com',['80','50']], ['tracking2','efg@qq.com',['60','30']], ]; define(custom_sepa, _); function t($a0){ $r = []; $res = []; foreach($a0 as $v){ $r[$v[0].custom_sepa.$v[1]][] = $v[2]; } foreach($r as $k=>$v){ $s = explode(custom_sepa, $k); $s[] = $v; $res[] = $s; } return $res; } $res = t($arr1); print_r($res == $arr2);
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product