1, 배열 arr1을 arr2로 변환하는 방법은 무엇입니까?
arr1 = [
<code>['tracking1','abc@qq.com','80'], ['tracking1','abc@qq.com','50'], ['tracking2','efg@qq.com','60'], ['tracking2','efg@qq.com','30'],</code>
];
arr2 = [
<code>['tracking1','abc@qq.com',['80','50']], ['tracking2','efg@qq.com',['60','30']],</code>
];
1, 배열 arr1을 arr2로 변환하는 방법은 무엇입니까?
arr1 = [
<code>['tracking1','abc@qq.com','80'], ['tracking1','abc@qq.com','50'], ['tracking2','efg@qq.com','60'], ['tracking2','efg@qq.com','30'],</code>
];
arr2 = [
<code>['tracking1','abc@qq.com',['80','50']], ['tracking2','efg@qq.com',['60','30']],</code>
];
아이디어는 매우 간단합니다. 즉, 배열의 첫 번째 열과 첫 번째 열의 값을 고유한 key
으로 작성하는 것입니다. 위 코드가 좀 과하다고 생각됩니다. 간결한 코드는 다음과 같습니다. 🎜>
<code>$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);</code>
먼저 arr1[0]이 동일한지 확인하기 위해 트래버스합니다. 동일한 경우 이를 기반으로 [1]이 동일한지 확인합니다. 동일한 경우에는 값을 삽입하고, 다른 경우에는 배열로 병합하세요.
<code>$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); </code>14줄의 기능 코드, 너무 단순하지 마세요.
제 생각을 말씀드리자면 문제의 배열은 실제로 각 배열에 v0, v1 값, v2 값 두 부분으로 나누어져 있습니다.
<code>$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;</code>