php에서 array_diff_key () 및 array_keys () 는 일반적으로 사용되는 배열 작동 기능입니다. 전자는 어레이의 키 이름 차이를 비교하는 데 사용되며 후자는 배열의 키 이름을 얻는 데 사용됩니다. 경우에 따라이 두 기능을 동시에 사용하여 복잡한 배열 작업을 구현할 수 있습니다. 그러나 array_diff_key () 및 array_keys ()가 함께 사용되면 몇 가지 일반적인 오류가 발생할 수 있습니다. 이 기사는 몇 가지 일반적인 오류 예제를 통해 이유를 자세히 분석하고 솔루션을 제공합니다.
첫째,이 두 기능의 기본 사용을 이해하면 오류를 피하는 방법을 더 잘 이해할 수 있습니다.
Array_Keys () 함수 : 배열에서 모든 키 이름의 배열을 반환합니다.
$array = ["a" => 1, "b" => 2, "c" => 3];
$keys = array_keys($array);
print_r($keys);
// 산출:Array ( [0] => a [1] => b [2] => c )
Array_Diff_Key () 함수 : 두 배열의 키 이름을 비교하고 차이 부분을 반환하는 데 사용됩니다.
$array1 = ["a" => 1, "b" => 2, "c" => 3];
$array2 = ["b" => 10, "c" => 20];
$result = array_diff_key($array1, $array2);
print_r($result);
// 산출:Array ( [a] => 1 )
키 이름 차이를 비교할 때 많은 개발자는 먼저 Array_Keys ()를 사용하여 배열의 키 이름을 얻고 다른 배열의 키 이름과 비교하려고하지만 종종 오류가 발생합니다. array_keys ()가 원래 배열의 키 이름 세트가 아닌 키 이름의 배열을 반환하기 때문입니다. 이러한 방식으로 Array_Diff_Key ()를 사용하면 결과가 부정확합니다.
$array1 = ["a" => 1, "b" => 2, "c" => 3];
$array2 = ["b" => 10, "c" => 20];
// 잘못된 방법
$keys1 = array_keys($array1);
$result = array_diff_key($keys1, $array2);
print_r($result);
// 산출:Array ( )
문제 분석 : array1 의 키 이름 배열 [ "a", "b", "c"는 원래 배열 array1 의 키 이름과 값 사이의 연관성보다는 $ keys1 에 저장됩니다. Array_diff_key ()는 키 이름으로 비교되며 현재 array_diff_key ()는 Keys1 의 키 이름을 비교하기 위해 사용하며 결과는 당연히 기대치와 일치하지 않습니다.
올바른 방법 : Array_Diff_Key ()를 사용하여 원래 배열을 비교하십시오.
// 올바른 방법
$result = array_diff_key($array1, $array2);
print_r($result);
// 산출:Array ( [a] => 1 )
또 다른 일반적인 실수는 두 배열의 키 이름과 값의 차이를 동시에 계산하는 것입니다. array_diff_key ()는 키 이름 만 비교하지만 키 값은 비교되지 않습니다. 따라서 키와 값을 동시에 비교 해야하는 경우 예상치 못한 결과를 얻을 수 있습니다.
$array1 = ["a" => 1, "b" => 2, "c" => 3];
$array2 = ["a" => 10, "b" => 2];
$result = array_diff_key($array1, $array2);
print_r($result);
// 산출:Array ( [c] => 3 )
문제 분석 : 위 코드에서 Array_Diff_Key ()는 키 이름 만 비교하지만 키의 해당 값을 고려하지는 않습니다. $ array1 에서 "A" 와 "B" 는 $ array2 의 키 이름과 동일하므로 차이가 없습니다. "C" 의 키 이름이 $ array2 의 키 이름과 다른 경우에만 반환됩니다.
솔루션 : 키 이름뿐만 아니라 키 값을 비교하려면 array_diff_key () 대신 array_diff_assoc ()를 사용할 수 있으므로 키 이름과 값을 동시에 비교할 수 있습니다.
$result = array_diff_assoc($array1, $array2);
print_r($result);
// 산출:Array ( [a] => 1 [c] => 3 )
기능의 잘못된 사용법을 이해하십시오 . 여러 번 개발자는 Array_Keys () 및 Array_Diff_Key () 의 역할을 완전히 이해하지 못하며 함께 사용하면 오류가 발생합니다.
키와 값의 차이에주의를 기울이지 마십시오 . array_diff_key ()는 배열의 키 이름 만 비교하지만 키 값은 포함되지 않습니다. 이를 무시하면 개발자로부터 논리적 편차가 발생하고 불필요한 오류가 발생합니다.
다른 배열 사이의 구조적 차이 : 때로는 배열의 구조가 복잡하고 다차원 배열을 포함하거나 다른 유형의 키 (예 : 문자열 및 숫자)를 포함 할 수 있습니다. 현재 오류를 피하기 위해 적절한 기능과 방법을 사용하는 데주의를 기울여야합니다.
Array_Diff_Key () 및 Array_Keys () 는 두 가지 강력한 배열 작업 기능이지만 특히 배열 키 이름과 키 값의 차이를 위해 함께 사용될 때 오류가 발생하기 쉬운 경우가 많습니다. 그들이 어떻게 작동하는지 이해하는 것이 중요합니다. 이러한 기능을 올바르게 사용하고 기능을 혼동하지 않으면 배열 작업을 더 잘 처리하고 일반적인 오류를 피할 수 있습니다. 키 이름뿐만 아니라 키 값을 비교하려면 Array_Diff_Assoc ()를 사용하여 예상치 못한 결과를 피할 수 있습니다.