현재 위치: > 최신 기사 목록> PHP의 배열 요소를 정확하게 비교하기 위해 Array_udiff_Assoc 및 Array_Map을 결합하는 방법은 무엇입니까?

PHP의 배열 요소를 정확하게 비교하기 위해 Array_udiff_Assoc 및 Array_Map을 결합하는 방법은 무엇입니까?

gitbox 2025-09-28
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// 이 부분은 기사의 내용과 관련이 없습니다.,어떤 것을 포함 할 수 있습니다 PHP 주석 또는 간단한 변수 정의</span></span><span>
</span><span><span class="hljs-variable">$dummy</span></span><span> = </span><span><span class="hljs-string">"이것은 독립적 인 코드입니다"</span></span><span>;
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">placeholderFunction</span></span><span>(</span><span><span class="hljs-params"></span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-string">"자리 표시 자 기능 출력"</span></span><span>;
}

</span><span><span class="hljs-meta">?&gt;</span></span><span>

&lt;hr&gt;

</span><span><span class="hljs-meta">&lt;?php</span></span><span>
<span class="hljs-comment">/**
 * PHP 결합하는 방법 array_udiff_assoc 그리고 array_map 배열 요소의 정확한 비교를 달성합니다?
 *
 * 존재하다 PHP 가운데,두 배열의 요소를 비교해야 할 때,비교 과정이 주요 이름을 고려할 수 있기를 바랍니다.、값과 사용자 정의 비교 로직,
 * array_udiff_assoc 그리고 array_map 이것들은 매우 유용한 두 가지 도구입니다。이 기사는 배열 요소를 정확하게 비교하기 위해이를 결합하는 방법을 자세히 설명합니다.。
 *
 * 1. array_udiff_assoc 소개
 * array_udiff_assoc() 두 배열의 차이점을 비교하는 데 사용됩니다,同时考虑键名그리고键值。기능 프로토 타입은 다음과 같습니다:
 *
 * array_udiff_assoc(array $array1, array $array2, callable $value_compare_func): array
 *
 * 여기 $value_compare_func 콜백 함수입니다,사용자 정의 값에 대한 비교 로직。
 *
 * 2. array_map 소개
 * array_map() 可以对数组가운데的每个요소应用回调函数,새 배열을 생성하십시오。프로토 타입은 다음과 같습니다:
 *
 * array_map(callable $callback, array ...$arrays): array
 *
 * 통과하다 array_map,我们可以존재하다比较前对数组요소进行标准化处理(예를 들어, 공간을 제거하십시오、통합 사례 등)。
 *
 * 3. 아이디어의 조합
 * - 사용 array_map 두 배열의 통합 처리,요소를 일관성있게 만듭니다。
 * - 然后사용 array_udiff_assoc 두 배열의 비교,사용자 정의 콜백을 사용하여보다 정확한 불일치 판단을 달성하십시오。
 *
 * 샘플 코드:
 */</span>

</span><span><span class="hljs-comment">// 원래 배열</span></span><span>
</span><span><span class="hljs-variable">$array1</span></span><span> = [
    </span><span><span class="hljs-string">'a'</span></span><span> =&gt; </span><span><span class="hljs-string">' Apple '</span></span><span>,
    </span><span><span class="hljs-string">'b'</span></span><span> =&gt; </span><span><span class="hljs-string">'Banana'</span></span><span>,
    </span><span><span class="hljs-string">'c'</span></span><span> =&gt; </span><span><span class="hljs-string">'Cherry'</span></span><span>
];

</span><span><span class="hljs-variable">$array2</span></span><span> = [
    </span><span><span class="hljs-string">'a'</span></span><span> =&gt; </span><span><span class="hljs-string">'apple'</span></span><span>,
    </span><span><span class="hljs-string">'b'</span></span><span> =&gt; </span><span><span class="hljs-string">'banana '</span></span><span>,
    </span><span><span class="hljs-string">'d'</span></span><span> =&gt; </span><span><span class="hljs-string">'Date'</span></span><span>
];

</span><span><span class="hljs-comment">// 배열 요소의 통합 처리(전면과 후면 공간을 제거하고 소문자를 돌립니다)</span></span><span>
</span><span><span class="hljs-variable">$normalizedArray1</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$value</span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">strtolower</span></span><span>(</span><span><span class="hljs-title function_ invoke__">trim</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>));
}, </span><span><span class="hljs-variable">$array1</span></span><span>);

</span><span><span class="hljs-variable">$normalizedArray2</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_map</span></span><span>(function(</span><span><span class="hljs-variable">$value</span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">strtolower</span></span><span>(</span><span><span class="hljs-title function_ invoke__">trim</span></span><span>(</span><span><span class="hljs-variable">$value</span></span><span>));
}, </span><span><span class="hljs-variable">$array2</span></span><span>);

</span><span><span class="hljs-comment">// 사용자 정의 비교 기능</span></span><span>
</span><span><span class="hljs-function"><span class="hljs-keyword">function</span></span></span><span> </span><span><span class="hljs-title">compareValues</span></span><span>(</span><span><span class="hljs-params"><span class="hljs-variable">$value1</span></span></span><span>, </span><span><span class="hljs-variable">$value2</span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">strcmp</span></span><span>(</span><span><span class="hljs-variable">$value1</span></span><span>, </span><span><span class="hljs-variable">$value2</span></span><span>);
}

</span><span><span class="hljs-comment">// 사용 array_udiff_assoc 얻다 $array1 가운데与 $array2 다른 요소</span></span><span>
</span><span><span class="hljs-variable">$difference</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_udiff_assoc</span></span><span>(</span><span><span class="hljs-variable">$normalizedArray1</span></span><span>, </span><span><span class="hljs-variable">$normalizedArray2</span></span><span>, </span><span><span class="hljs-string">'compareValues'</span></span><span>);

</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"두 배열의 정확한 비교 후 차이 요소:\n"</span></span><span>;
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$difference</span></span><span>);

<span class="hljs-comment">/**
 * 출력 결과:
 * Array
 * (
 *     [c] =&gt; cherry
 * )
 *
 * 설명하다:
 * - 요소 'c' =&gt; 'Cherry' 존재하다 $array2 가운데不存존재하다,따라서 차이로 식별됩니다。
 * - 요소 'a' 그리고 'b' 통과하십시오 trim 그리고 strtolower 표준화 후,동일하게 간주됩니다,因此不존재하다结果가운데。
 *
 * 요약:
 * 통과하다结合 array_map 그리고 array_udiff_assoc,可以존재하다比较数组时做到既考虑键名,가치도 고려하십시오,并且可以통과하다回调函数自定义比较规则,
 * 복잡한 데이터 차이 분석 요구 사항에 적합합니다。
 */</span>
</span><span><span class="hljs-meta">?&gt;</span></span><span>
</span></span>