2차원 배열로 작업할 때는 특정 기준에 따라 행을 필터링하는 것이 중요합니다. 이 문서에서는 공통 행을 제외하고 한 배열의 행을 다른 배열의 행으로 필터링하는 일반적인 문제를 다룹니다.
문제:
array_diff_assoc( ) 이 필터링을 수행하면 의도한 고유 행 대신 일반 행이 반환됩니다.
<code class="php">$array1 = [ [12 => 'new q sets'], [11 => 'common set'] ]; $array2 = [ [11 => 'common set'] ];</code>
array_diff_assoc($array1, $array2)를 호출한 후에도 출력에는 여전히 공통 행이 포함됩니다.
<code class="php">[ [11 => 'common set'] ]</code>
해결책:
문제의 근본 원인은 array_diff_assoc()에서 사용하는 비교 메커니즘에 있습니다. 이는 엄격한 비교를 사용합니다. 즉, 값의 문자열 표현이 정확하게 일치해야 함을 의미합니다. 주어진 예에서 두 배열의 키 11과 연관된 값은 '공통 세트'입니다. 그러나 array_diff_assoc()은 서로 다른 배열에 저장되기 때문에 이를 고유한 값으로 처리합니다.
원하는 필터링 동작을 얻으려면 배열에 저장된 실제 값을 고려한 비교를 사용해야 합니다. 이를 달성하는 한 가지 방법은 모든 배열 요소를 비교하기 전에 공통 유형으로 변환하는 것입니다. 다음은 json_encode()를 사용하는 예입니다.
<code class="php">$json_array1 = array_map('json_encode', $array1); $json_array2 = array_map('json_encode', $array2); $filtered_rows = array_diff_assoc($json_array1, $json_array2); $filtered_rows = array_map('json_decode', $filtered_rows);</code>
이 접근 방식은 각 배열 요소를 JSON 문자열로 변환하고 이제 실제 값을 기반으로 비교가 이루어지도록 합니다. 필터링 작업은 고유한 행만 올바르게 식별하고 반환합니다.
<code class="php">[ [12 => 'new q sets'] ]</code>
위 내용은 일반 행을 제외하면서 다른 배열 행을 기준으로 2D 배열 행을 필터링하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!