>  기사  >  백엔드 개발  >  PHP에서 2차원 배열의 교차점 찾기

PHP에서 2차원 배열의 교차점 찾기

WBOY
WBOY원래의
2023-05-07 17:47:081000검색

PHP 프로그래밍에서 2차원 배열은 자주 사용되는 데이터 구조 중 하나입니다. 2차원 배열에서 가장 일반적으로 사용되는 연산 중 하나는 교차점을 찾는 것입니다. 그렇다면 PHP에서 2차원 배열의 교차점을 찾는 방법은 무엇일까요? 구체적인 구현을 살펴보겠습니다.

1. array_intersect 함수 사용

PHP는 두 배열의 교차점을 찾는 데 사용할 수 있는 내장 함수 array_intersect()를 제공합니다. 이 함수는 여러 배열을 매개변수로 사용할 수 있습니다. 2차원 배열의 경우 array_map 함수를 사용하여 연관 배열을 인덱스 배열로 변환해야 합니다.

샘플 코드는 다음과 같습니다.

$arr1 = array(
    array('id'=>1,'name'=>'Tom'),
    array('id'=>2,'name'=>'Jack'),
    array('id'=>3,'name'=>'Lucy'),
);

$arr2 = array(
    array('id'=>2,'name'=>'Jack'),
    array('id'=>4,'name'=>'Mike'),
    array('id'=>5,'name'=>'Lily'),
);

$intersect = call_user_func_array('array_intersect', array_map(function($ar){return array_values($ar);},array($arr1, $arr2)));

var_dump($intersect);

출력 결과는 다음과 같습니다.

array(1) {
  [0]=>
  array(2) {
    ["id"]=>
    int(2)
    ["name"]=>
    string(4) "Jack"
  }
}

2. 사용자 정의 함수 사용

내장 함수 외에도 사용자 정의 함수를 사용하여 2차원 교차 기능을 구현할 수도 있습니다. 배열. 다음은 간단한 구현입니다.

/**
 * 求二维数组交集
 * @param $arr1
 * @param $arr2
 * @return array
 */
function arr_intersect($arr1, $arr2){
    $intersect = array();
    foreach($arr1 as $value1){
        foreach($arr2 as $value2){
            if($value1 == $value2){
                $intersect[] = $value1;
                break;
            }
        }
    }
    return $intersect;
}

$arr1 = array(
    array('id'=>1,'name'=>'Tom'),
    array('id'=>2,'name'=>'Jack'),
    array('id'=>3,'name'=>'Lucy'),
);

$arr2 = array(
    array('id'=>2,'name'=>'Jack'),
    array('id'=>4,'name'=>'Mike'),
    array('id'=>5,'name'=>'Lily'),
);

$intersect = arr_intersect($arr1, $arr2);

var_dump($intersect);

출력 결과는 다음과 같습니다.

array(1) {
  [0]=>
  array(2) {
    ["id"]=>
    int(2)
    ["name"]=>
    string(4) "Jack"
  }
}

Summary

2차원 배열의 교차 연산은 PHP 프로그래밍에서 매우 일반적입니다. PHP에 내장된 array_intersect() 함수나 사용자 정의 함수를 사용하면 2차원 배열의 교차 함수를 쉽게 구현할 수 있습니다. 실제 프로젝트에서는 빠르고 안정적인 교차 알고리즘을 구현하기 위해 특정 시나리오에 따라 최적의 방법을 선택해야 합니다.

위 내용은 PHP에서 2차원 배열의 교차점 찾기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.