현재 위치: > 최신 기사 목록> Array_Diff ()가 반환 한 결과를 디버깅하는 방법?

Array_Diff ()가 반환 한 결과를 디버깅하는 방법?

M66 2025-06-06

PHP의 Array_Diff () 함수는 두 배열을 비교하고 첫 번째 배열의 모든 요소를 ​​포함하는 배열을 반환하는 데 사용되지만 다른 배열은 아닙니다. 이 기능은 간단 해 보이지만 사용하면 디버깅 문제가 발생할 수 있습니다. 특히 반환 된 결과가 예상 한 것이 아니라는 것을 알게됩니다. 다음으로 Array_Diff () 함수의 결과를 디버깅하고 차이점을 찾고 문제를 해결하는 방법을 다룰 것입니다.

1. array_diff () 함수의 기본 사용

Array_Diff () 함수의 기본 구문은 다음과 같습니다.

 array_diff(array $array1, array ...$arrays): array
  • $ array1 은 벤치 마크 배열, 즉 다른 배열과 비교하려는 배열입니다.

  • $ 배열 은 다른 배열이며, 비교하려는 배열은 여러 배열 일 수 있습니다.

예를 들어 다음 두 배열이 있다고 가정합니다.

 $array1 = [1, 2, 3, 4, 5];
$array2 = [2, 3, 6];

Array_Diff ()를 사용하여 Array1 에서 요소를 찾을 수 있지만 Array2 에서는 그렇지 않습니다.

 $result = array_diff($array1, $array2);
print_r($result);

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

 Array
(
    [0] => 1
    [3] => 4
    [4] => 5
)

이는 1, 4 및 5가 Array1 에 존재하지만 Array2 에서는 존재하지 않는 요소임을 의미합니다.

2. 결과가 Array_Diff () 에 의해 반환 된 결과는 왜 기대치를 충족하지 않습니까?

Array_Diff ()를 사용할 때 결과가 반환되면 기대치를 충족하지 않으면 몇 가지 이유가있을 수 있습니다.

2.1 배열 요소 유형 불일치

Array_diff ()는 요소의 값을 기준으로 비교하지만 엄격한 비교를 통해 차이를 찾습니다 (즉, 유형과 값 모두 동일해야 함). 배열 요소의 유형이 다른 경우 값이 동일하더라도 비교가 기대치와 일치하지 않도록 할 수 있습니다.

예를 들어:

 $array1 = [1, 2, 3];
$array2 = ['1', '2', '3'];
$result = array_diff($array1, $array2);
print_r($result);

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

 Array
(
    [0] => 1
    [1] => 2
    [2] => 3
)

값은 동일하게 보이지만 Array_Diff ()Array1 의 숫자 1, 2, 3이 array2 의 문자열 '1', '2', '3'과 같지 않다고 생각합니다. 이 문제를 해결하기 위해 먼저 어레이의 요소가 일관되거나 비교하기 전에 요소를 동일한 유형으로 변환 할 수 있습니다.

2.2 키 이름의 영향

Array_Diff ()는 참조 배열에 키 이름을 유지합니다. 키 이름의 차이를 무시 해야하는 경우 array_values ​​() 함수를 사용하여 배열을 다시 표시 할 수 있습니다.

 $array1 = [1 => 1, 2 => 2, 3 => 3];
$array2 = [1 => 1, 2 => 2];
$result = array_diff(array_values($array1), array_values($array2));
print_r($result);

이렇게하면 키 이름이 다르기 때문에 차이가 피할 수 있습니다.

3. Array_Diff ()가 반환 한 결과를 디버깅하는 방법은 무엇입니까?

3.1 출력 디버깅 정보

디버깅 할 때 먼저 배열의 내용을 출력하여 해당 구조와 데이터가 올바른지 확인할 수 있습니다. print_r () 또는 var_dump () 함수를 사용하여 배열의 세부 사항을 볼 수 있습니다.

 print_r($array1);
print_r($array2);

3.2 배열 유형을 확인하십시오

다른 유형의 데이터가 아닌 배열을 비교하고 있는지 확인하십시오. 다른 유형의 변수를 실수로 전달하면 array_diff ()가 잘못된 결과를 반환합니다. IS_ARRAY ()를 사용하여 변수 유형을 확인할 수 있습니다.

 if (!is_array($array1) || !is_array($array2)) {
    echo "변수 중 하나는 배열이 아닙니다!";
}

3.3 수동으로 차이를 확인하십시오

배열 차이를보다 직관적으로 이해하려면 두 배열을 수동으로 루프하고 차이를 출력 할 수 있습니다. 예를 들어:

 foreach ($array1 as $key => $value) {
    if (!in_array($value, $array2)) {
        echo "존재하다 array1 요소를 찾으십시오 $value, 但不존재하다 array2 가운데。\n";
    }
}

이렇게하면 각 차이가 무엇인지 이해하고 더 나은 디버그하는 데 도움이됩니다.

4. 실제 디버깅 케이스

프로젝트에 다음 코드가 있다고 가정합니다.

 $array1 = ['apple', 'banana', 'cherry'];
$array2 = ['apple', 'grape', 'banana'];
$result = array_diff($array1, $array2);
print_r($result);

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

 Array
(
    [2] => cherry
)

이 예에서는 반환이 체리 이며 다른 잠재적 차이를 확인하고 싶을 수도 있습니다. 더 나은 디버깅을 위해 두 개의 배열을 인쇄하고 각 요소가 올바른지 확인할 수 있습니다. 예를 들어:

 print_r($array1);
print_r($array2);

이렇게하면 각 요소의 값을 명확하게보고 차이가 유형 불일치 또는 기타 이유에 기인한지 확인할 수 있습니다.

5. 결론

Array_Diff () 함수를 디버깅 할 때 키는 특히 유형 및 키 이름 측면에서 동작을 이해하는 것입니다. 배열의 구조 및 데이터 유형을주의 깊게 검토하고 각 차이를 수동으로 디버깅하면 문제를 효과적으로 식별하고 해결할 수 있습니다. Array_Diff () 에 의해 반환 된 결과가 여전히 예상대로 없다는 것을 알게되면, 숨겨진 유형 차이 또는 기타 논리적 오류가 없는지 확인하기 위해 배열의 데이터를 다시 방문해야 할 수도 있습니다.