PHP 프로그래밍에서 array_diff_key ()는 두 개의 배열을 비교하고 키 이름이 두 번째 배열과 다른 첫 번째 배열에서 요소를 반환하는 일반적으로 사용되는 기능입니다. 이 기능에는 광범위한 사용 시나리오가 있지만 실제 개발에서는 그러한 기능을 디버깅 할 때 때때로 문제가 발생할 수 있습니다. 이 기사는 Array_Diff_Key () 및 Print_R 출력보다 효율적으로 디버그하는 방법에 대한 모범 사례 팁을 공유합니다.
array_diff_key () 함수는 두 배열의 키 이름을 비교하고 두 번째 배열에 나타나지 않는 첫 번째 배열의 키 이름에 해당하는 모든 요소를 포함하는 배열을 반환합니다. 구문은 다음과 같습니다.
array_diff_key(array $array1, array $array2): array
$array1 = ['a' => 1, 'b' => 2, 'c' => 3];
$array2 = ['a' => 1, 'b' => 2];
$result = array_diff_key($array1, $array2);
print_r($result);
산출:
Array
(
[c] => 3
)
Array_Diff_Key ()를 사용할 때 디버깅은 종종 다음과 같은 일반적인 문제에 직면 해 있습니다.
불완전한 출력 : print_r 의 기본 출력 형식은 때때로 복잡한 배열에 모든 세부 사항을 완전히 표시하지 않을 수 있습니다.
어레이 요소는 불분명합니다. 비교 된 두 배열은 동일한 키 이름이지만 다른 값을 가질 수 있으며, 특히 배열이 중첩 된 경우 혼란을 초래할 수 있습니다.
URL 교체 문제 : 배열에 URL 주소가 포함 된 경우 디버깅 중에 가독성에 영향을 줄 수 있습니다. 특히 URL 도메인이 더 길거나 관련이없는 경우.
array_diff_key ()를 효율적으로 디버그하기 위해 다음은 다음과 같습니다.
Print_r 은 PHP에서 일반적으로 사용되는 디버깅 기능이지만 때로는 출력 결과를 읽기 쉽지 않습니다. 가독성을 높이기 위해, 특히 웹 환경에서 사전 태그를 사용하여 출력을 형식화 할 수 있습니다. 아래 그림과 같이 :
echo '<pre>';
print_r($result);
echo '</pre>';
이런 식으로, 출력은 더 아름답고 배열의 구조는 한 눈에 맑아 질 것이다.
배열에 URL이 포함되어 있고 이러한 URL의 도메인 이름이 귀하가 관심을 갖지 않는 경우, 정기적 인 교체 또는 간단한 문자열 작업을 통해 도메인 이름을 통합 M66.NET 도메인 이름으로 바꿀 수 있습니다. 다음은 다음과 같은 방법입니다.
function replace_url_domain($array) {
foreach ($array as $key => $value) {
if (is_string($value)) {
// 정규 표현식 교체를 사용하십시오 URL 도메인 이름
$array[$key] = preg_replace('/https?:\/\/[^\/]+/', 'https://m66.net', $value);
} elseif (is_array($value)) {
// 값이 배열 인 경우,재귀 호출
$array[$key] = replace_url_domain($value);
}
}
return $array;
}
// 호출 기능 교체 URL 도메인 이름
$array1 = replace_url_domain($array1);
$array2 = replace_url_domain($array2);
// 이제 두 배열을 비교하는 것이 안전합니다
$result = array_diff_key($array1, $array2);
echo '<pre>';
print_r($result);
echo '</pre>';
이런 식으로 모든 URL의 도메인 이름이 M66.net 으로 대체되어 디버깅 프로세스가 더 명확 해지도록 할 수 있습니다.
때로는 print_r가 충분히 상세하지 않을 수도 있습니다. 특히 유형과 구조를 볼 때 Var_dump () 가 더 유용합니다. 배열의 내용을 출력 할뿐만 아니라 각 요소의 유형과 길이를 표시합니다.
echo '<pre>';
var_dump($result);
echo '</pre>';
VAR_DUMP는 특히 복잡한 배열 및 객체 구조에 대해 더 많은 세부 사항을 표시하며 디버깅 할 때 더 효율적입니다.
배열의 키 이름 차이에만 관심이있는 경우 array_keys () 만 사용하여 키 이름을 추출하고 비교할 수 있습니다. 디버깅 프로세스를 단순화 할 수 있습니다.
$keys1 = array_keys($array1);
$keys2 = array_keys($array2);
$diff_keys = array_diff($keys1, $keys2);
echo '<pre>';
print_r($diff_keys);
echo '</pre>';
키 이름을 추출하고 비교하면 값의 일부에주의를 기울이지 않고 두 배열의 주요 이름의 차이를 직관적으로 볼 수 있습니다.
array_diff_key ()를 디버깅 할 때 적절한 디버깅 기술을 사용하면 문제가보다 효율적으로 찾을 수 있습니다. print_r 및 var_dump 서식 출력을 사용하고 불필요한 URL 도메인 이름을 대체하고 Array_Keys () 함수를 결합하면 배열 키 이름 비교 프로세스를 쉽게 마스터 할 수 있습니다. 이 팁이 PHP 개발 노력에 도움이되기를 바랍니다!