요구사항
이제 다음과 같은 2차원 배열 세트가 있습니다.
array(8) { [0]=> array(2) { ["name"]=> string(4) "name" ["value"]=> string(6) "青叶" } [1]=> array(2) { ["name"]=> string(5) "phone" ["value"]=> string(11) "13812341234" } [2]=> array(2) { ["name"]=> string(12) "fileds_507[]" ["value"]=> string(12) "我是青叶" } [3]=> array(2) { ["name"]=> string(12) "fileds_508[]" ["value"]=> string(6) "合肥" } [4]=> array(2) { ["name"]=> string(12) "fileds_509[]" ["value"]=> string(3) "男" } [5]=> array(2) { ["name"]=> string(12) "fileds_510[]" ["value"]=> string(6) "足球" } [6]=> array(2) { ["name"]=> string(12) "fileds_510[]" ["value"]=> string(6) "棒球" } [7]=> array(2) { ["name"]=> string(12) "fileds_511[]" ["value"]=> string(16) "2016-12-15T11:15" } }
동일한 키 이름을 가진 배열의 값을 병합하고 두 번째 차원의 동일한 값을 사용하여 새 배열을 형성합니다.
예를 들어 위 코드에서 fields_510이라는 두 개의 2차원 배열을 축구와 야구의 값이 포함된 배열로 병합해야 합니다.
생각
배열이라고 하면 PHP에서 루프를 먼저 생각하기 때문에 버블 정렬과 유사한 루프 처리에 사용하는 것이 분명히 더 적합합니다. 하나씩 비교하고 마지막으로 다루기 쉽습니다.
코드
코드는 다음과 같습니다.
$public_info = 数组; for ($i=0;$i<count($public_info);$i++) { for ($j=$i+1;$j<count($public_info);$j++) { if ($public_info[$j]['name'] == $public_info[$i]['name']) { $public_info[$i]['value'] .= ',' . $public_info[$j]['value']; unset($public_info[$j]); } } }
실행 결과:
array(7) { [0]=> array(2) { ["name"]=> string(4) "name" ["value"]=> string(6) "青叶" } [1]=> array(2) { ["name"]=> string(5) "phone" ["value"]=> string(11) "13812341234" } [2]=> array(2) { ["name"]=> string(12) "fileds_507[]" ["value"]=> string(12) "我是青叶" } [3]=> array(2) { ["name"]=> string(12) "fileds_508[]" ["value"]=> string(6) "合肥" } [4]=> array(2) { ["name"]=> string(12) "fileds_509[]" ["value"]=> string(3) "男" } [5]=> array(2) { ["name"]=> string(12) "fileds_510[]" ["value"]=> string(13) "足球,棒球" } [7]=> array(2) { ["name"]=> string(12) "fileds_511[]" ["value"]=> string(16) "2016-12-15T11:15" } }
요약
요구 사항이 충족되면 배열을 만날 때마다 미리 만들어진 PHP 메소드 외에 가장 먼저 생각하는 것은 foreach인지 for인지에 관계없이 루프입니다. 위의 예는 제가 처리한 사용자 정의 양식을 편집하는 간단한 프로세스입니다. 내 프로젝트가 모든 사람에게 도움이 되기를 바랍니다.
PHP 2차원 배열 중복 제거 알고리즘에 관한 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!