현재 위치: > 최신 기사 목록> Array_diff_Assoc 기능 실용 자습서 : 사용자 양식에서 수정 된 필드를 감지하는 방법은 무엇입니까?

Array_diff_Assoc 기능 실용 자습서 : 사용자 양식에서 수정 된 필드를 감지하는 방법은 무엇입니까?

gitbox 2025-07-26

웹 개발에서 사용자는 양식을 제출할 때 제출 된 데이터를 원본 데이터, 특히 사용자 정보 수정 시나리오에서 비교해야합니다. 예를 들어, 사용자는 개인 정보를 수정했으며 수정 된 필드를 감지하려고합니다. PHP가 제공하는 Array_Diff_Assoc () 함수는이 작업을 쉽게 완성하는 데 도움이 될 수 있습니다. 오늘날, 우리는이 기능을 사용하여 실제적인 경우를 통해 수정 된 필드를 형태로 감지하는 방법을 배웁니다.

1. array_diff_assoc () 함수는 무엇입니까?

array_diff_assoc () 함수는 키 이름과 키 값의 비교를 기반으로 두 배열의 차이를 계산하는 데 사용됩니다. 첫 번째 배열에 포함 된 요소를 반환하지만 두 번째 배열에는 없습니다. 배열의 값을 비교할뿐만 아니라 배열의 주요 이름을 비교하므로 Array_Diff () 보다 더 엄격합니다.

기능 프로토 타입 :

 <span><span><span class="hljs-title function_ invoke__">array_diff_assoc</span></span><span>(</span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$array1</span></span><span>, </span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$array2</span></span><span>): </span><span><span class="hljs-keyword">array</span></span><span>
</span></span>
  • $ array1 : 첫 번째 배열.

  • $ array2 : 두 번째 배열.

  • 반환 값 : $ array2 와 다른 $ array1의 모든 요소를 포함하는 배열.

2. 실제 응용 시나리오

사용자가 정보를 수정하는 양식이 있고 사용자가 제출 한 정보에 이름, 이메일, 전화 번호 등과 같은 필드가 포함되어 있다고 가정합니다. 원본 사용자 데이터를 제출 된 양식 데이터와 비교하여 수정 된 필드를 감지하려고합니다.

3. 샘플 코드

1 단계 : 원래 데이터와 사용자가 제출 한 데이터 정의

먼저, 사용자의 원래 데이터가 포함 된 배열과 사용자의 제출 된 데이터가 포함 된 배열을 정의하십시오.

 <span><span><span class="hljs-comment">// 이것이 데이터베이스에 저장된 원래 사용자 정보라고 가정합니다.</span></span><span>
</span><span><span class="hljs-variable">$original_data</span></span><span> = [
    </span><span><span class="hljs-string">'name'</span></span><span> =&gt; </span><span><span class="hljs-string">'John Doe'</span></span><span>,
    </span><span><span class="hljs-string">'email'</span></span><span> =&gt; </span><span><span class="hljs-string">'[email protected]'</span></span><span>,
    </span><span><span class="hljs-string">'phone'</span></span><span> =&gt; </span><span><span class="hljs-string">'123-456-7890'</span></span><span>
];

</span><span><span class="hljs-comment">// 이것이 사용자가 제출 한 수정 된 양식 데이터라고 가정합니다.</span></span><span>
</span><span><span class="hljs-variable">$submitted_data</span></span><span> = [
    </span><span><span class="hljs-string">'name'</span></span><span> =&gt; </span><span><span class="hljs-string">'John Doe'</span></span><span>,  </span><span><span class="hljs-comment">// 이름이 변경되지 않았습니다</span></span><span>
    </span><span><span class="hljs-string">'email'</span></span><span> =&gt; </span><span><span class="hljs-string">'[email protected]'</span></span><span>,  </span><span><span class="hljs-comment">// 이메일 주소가 변경되었습니다</span></span><span>
    </span><span><span class="hljs-string">'phone'</span></span><span> =&gt; </span><span><span class="hljs-string">'123-456-7890'</span></span><span>  </span><span><span class="hljs-comment">// 전화 번호가 변경되지 않았습니다</span></span><span>
];
</span></span>

2 단계 : array_diff_assoc ()을 사용하여 데이터를 비교하십시오

다음으로 Array_Diff_Assoc ()을 사용하여 원래 데이터를 비교하고 데이터를 제출하여 수정 된 필드를 찾으십시오.

 <span><span><span class="hljs-comment">// 사용 array_diff_assoc 수정 된 필드를 찾으십시오</span></span><span>
</span><span><span class="hljs-variable">$changed_fields</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_diff_assoc</span></span><span>(</span><span><span class="hljs-variable">$submitted_data</span></span><span>, </span><span><span class="hljs-variable">$original_data</span></span><span>);

</span><span><span class="hljs-comment">// 출력 수정 필드</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-keyword">empty</span></span><span>(</span><span><span class="hljs-variable">$changed_fields</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-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$changed_fields</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$key</span></span><span> =&gt; </span><span><span class="hljs-variable">$value</span></span><span>) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$key</span></span></span><span>: </span><span><span class="hljs-subst">$value</span></span><span>\n";
    }
} </span><span><span class="hljs-keyword">else</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><span>수정 된 필드입니다:
</span><span><span class="hljs-symbol">email</span></span><span><span class="hljs-punctuation">:</span></span><span> john.doe</span><span><span class="hljs-meta">@newdomain</span></span><span>.com
</span></span>

4. 설명

  • 이 예에서 Array_Diff_Assoc ()는 제출 된 _DataOriginal_Data 배열의 키와 값을 비교합니다.

  • 이름과 전화 번호가 변경되지 않았으므로 사서함 필드 만 다르게 간주되므로 출력 결과는 이메일 필드가 수정되었음을 보여줍니다.

5. 최적화 : 사용자가 수정을 제출했는지 여부를 감지합니다.

수정 된 필드를 감지하는 것 외에도 사용자가 양식으로 수정을 제출했는지 알고 싶습니다. 특정 필드가 원래 데이터에 존재하지 않고 제출 된 데이터에 존재하는 경우 array_diff_assoc ()array_diff_key () 의 조합으로 판단 할 수 있습니다.

 <span><span><span class="hljs-comment">// 사용 array_diff_key 사용자가 새로운 필드를 제출했는지 여부를 감지합니다.</span></span><span>
</span><span><span class="hljs-variable">$new_fields</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_diff_key</span></span><span>(</span><span><span class="hljs-variable">$submitted_data</span></span><span>, </span><span><span class="hljs-variable">$original_data</span></span><span>);

</span><span><span class="hljs-keyword">if</span></span><span> (!</span><span><span class="hljs-keyword">empty</span></span><span>(</span><span><span class="hljs-variable">$new_fields</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-keyword">foreach</span></span><span> (</span><span><span class="hljs-variable">$new_fields</span></span><span> </span><span><span class="hljs-keyword">as</span></span><span> </span><span><span class="hljs-variable">$key</span></span><span> =&gt; </span><span><span class="hljs-variable">$value</span></span><span>) {
        </span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<span class="hljs-subst">$key</span></span></span><span>: </span><span><span class="hljs-subst">$value</span></span><span>\n";
    }
}
</span></span>

6. 요약

Array_Diff_Assoc () 은 사용자가 제출 한 형식으로 수정 된 필드를 쉽게 감지하는 데 도움이되는 매우 실용적인 기능입니다. 실제 개발 에서이 기능은 종종 사용자 데이터 수정 및 순서 수정과 같은 시나리오에 사용되어 변경 사항을 정확하게 추적 할 수 있습니다.

위의 예를 통해 원시 데이터를 사용자 제출 데이터와 비교하는 기능을 빠르게 구현하여 사용자 입력 및 양식 검증을 더 잘 처리 할 수 있습니다.