PHP에서 Array_Filter 기능은 배열에서 요소를 필터링하고 주어진 콜백 함수에 의해 리턴 된 부울 값에 따라 요소를 유지할지 여부를 결정하는 매우 실용적인 도구입니다. 이 기능은 종종 배열에서 기준을 충족하지 않는 요소를 제거하거나 일부 논리에 따라 데이터를 추출하는 데 사용됩니다.
<span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-keyword">array</span></span><span> </span><span><span class="hljs-variable">$array</span></span><span>, ?</span><span><span class="hljs-keyword">callable</span></span><span> </span><span><span class="hljs-variable">$callback</span></span><span> = </span><span><span class="hljs-literal">null</span></span><span>, </span><span><span class="hljs-keyword">int</span></span><span> </span><span><span class="hljs-variable">$mode</span></span><span> = </span><span><span class="hljs-number">0</span></span><span>): </span><span><span class="hljs-keyword">array</span></span><span>
</span></span>
배열 (필수)
필터링 작업을 수행하려는 배열입니다.
콜백 (선택 사항)
이것은 배열의 각 요소가 특정 조건을 충족하는지 여부를 결정하는 콜백 함수입니다. 이 매개 변수가 NULL 로 설정되면 Array_Filter는 Array에서 False , NULL , 0 , Emption Strings 등과 같은 모든 "빈"값을 제거합니다.
모드 (선택 사항)
이것은 콜백 함수를 사용하여 배열 요소를 판단하는 방법을 결정하는 상수입니다. 일반적으로 사용되는 모드는 다음과 같습니다.
Array_filter_use_key : 콜백 함수는 값 대신 배열의 키를 수신합니다.
Array_filter_use_both : 콜백 함수는 키와 값을 모두 수신합니다.
다음은 몇 가지 일반적인 Array_Filter 사용 예제입니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$arr</span></span><span> = [</span><span><span class="hljs-number">0</span></span><span>, </span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-literal">null</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-string">'apple'</span></span><span>, </span><span><span class="hljs-string">''</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>];
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
산출:
<span><span>Array
(
[</span><span><span class="hljs-meta">1</span></span><span>] => </span><span><span class="hljs-number">1</span></span><span>
[</span><span><span class="hljs-meta">3</span></span><span>] => </span><span><span class="hljs-number">2</span></span><span>
[</span><span><span class="hljs-meta">5</span></span><span>] => </span><span><span class="hljs-number">3</span></span><span>
[</span><span><span class="hljs-meta">6</span></span><span>] => apple
[</span><span><span class="hljs-meta">8</span></span><span>] => </span><span><span class="hljs-number">4</span></span><span>
)
</span></span>
이 예에서는 Array_Filter가 False , Null , 0 , 빈 문자 등과 같은 모든 "빈"값을 필터링합니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$arr</span></span><span> = [</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">2</span></span><span>, </span><span><span class="hljs-number">3</span></span><span>, </span><span><span class="hljs-number">4</span></span><span>, </span><span><span class="hljs-number">5</span></span><span>];
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$arr</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-variable">$value</span></span><span> % </span><span><span class="hljs-number">2</span></span><span> == </span><span><span class="hljs-number">0</span></span><span>; </span><span><span class="hljs-comment">// 숫자 만 유지됩니다</span></span><span>
});
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
산출:
<span><span>Array
(
[</span><span><span class="hljs-meta">1</span></span><span>] => </span><span><span class="hljs-number">2</span></span><span>
[</span><span><span class="hljs-meta">3</span></span><span>] => </span><span><span class="hljs-number">4</span></span><span>
)
</span></span>
이 예에서 Array_Filter는 콜백 함수를 사용하여 배열의 각 요소가 짝수인지 확인합니다. 반환 값이 참이 되면 요소가 유지됩니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$arr</span></span><span> = [
</span><span><span class="hljs-string">'first'</span></span><span> => </span><span><span class="hljs-number">1</span></span><span>,
</span><span><span class="hljs-string">'second'</span></span><span> => </span><span><span class="hljs-number">2</span></span><span>,
</span><span><span class="hljs-string">'third'</span></span><span> => </span><span><span class="hljs-number">3</span></span><span>,
</span><span><span class="hljs-string">'fourth'</span></span><span> => </span><span><span class="hljs-number">4</span></span><span>
];
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>, function(</span><span><span class="hljs-variable">$key</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$key</span></span><span>, </span><span><span class="hljs-string">'t'</span></span><span>) === </span><span><span class="hljs-number">0</span></span><span>; </span><span><span class="hljs-comment">// 키만 유지됩니다't'시작 요소</span></span><span>
}, ARRAY_FILTER_USE_KEY);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
산출:
<span><span>Array
(
[</span><span><span class="hljs-meta">third</span></span><span>] => </span><span><span class="hljs-number">3</span></span><span>
[</span><span><span class="hljs-meta">fourth</span></span><span>] => </span><span><span class="hljs-number">4</span></span><span>
)
</span></span>
이 예제는 배열 키를 기반으로 필터링하는 방법을 보여줍니다. array_filter_use_key 콜백 함수가 값 대신 배열 키를 받도록합니다.
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-variable">$arr</span></span><span> = [
</span><span><span class="hljs-string">'apple'</span></span><span> => </span><span><span class="hljs-number">5</span></span><span>,
</span><span><span class="hljs-string">'banana'</span></span><span> => </span><span><span class="hljs-number">0</span></span><span>,
</span><span><span class="hljs-string">'orange'</span></span><span> => </span><span><span class="hljs-number">2</span></span><span>,
</span><span><span class="hljs-string">'grape'</span></span><span> => </span><span><span class="hljs-number">3</span></span><span>
];
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$arr</span></span><span>, function(</span><span><span class="hljs-variable">$value</span></span><span>, </span><span><span class="hljs-variable">$key</span></span><span>) {
</span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$value</span></span><span> > </span><span><span class="hljs-number">1</span></span><span> && </span><span><span class="hljs-title function_ invoke__">strpos</span></span><span>(</span><span><span class="hljs-variable">$key</span></span><span>, </span><span><span class="hljs-string">'a'</span></span><span>) !== </span><span><span class="hljs-literal">false</span></span><span>; </span><span><span class="hljs-comment">// 예약 값은보다 큽니다1그리고 키에는 포함됩니다'a'강요</span></span><span>
}, ARRAY_FILTER_USE_BOTH);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$result</span></span><span>);
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
산출:
<span><span>Array
(
[</span><span><span class="hljs-meta">apple</span></span><span>] => </span><span><span class="hljs-number">5</span></span><span>
[</span><span><span class="hljs-meta">orange</span></span><span>] => </span><span><span class="hljs-number">2</span></span><span>
)
</span></span>
이 예제는 array_filter_use_both를 사용하여 콜백 함수가 키와 값으로 필터링 할 수 있도록합니다. 결과는 값이 1보다 큰 요소를 유지하고 키에 문자 'A'를 포함합니다.
콜백 함수의 반환 값 :
콜백 함수의 반환 값은 부울 값 이거나 False 여야합니다. True 가 반환되면 요소가 유지되고 False가 반환되면 제거됩니다.
성능 고려 사항 :
Array_Filter는 확인을 위해 전체 배열을 가로 지릅니다. 배열이 매우 크고 콜백 함수가 복잡한 경우 성능에 영향을 줄 수 있습니다. 이 경우 콜백 함수를 최적화 할 수 있는지 또는 다른 방법을 사용할 수 있는지 고려하십시오.
키 홀드 :
Array_Filter는 필터링시 원래 배열의 키를 유지합니다. 즉, 배열에서 요소를 제거하면 결과 배열의 키가 다시 표시되지 않습니다.
Array_Filter 는 다양한 조건에 따라 배열에서 요소를 필터링하는 데 사용할 수있는 매우 강력한 기능입니다. 기본 필터링 작업을 지원할뿐만 아니라 유연한 콜백 기능 및 여러 모드를 제공하므로 데이터를 처리 할 때보다 효율적으로 도움이됩니다. Array_Filter를 올바르게 이해하고 사용하면 특히 대규모 데이터가 처리되거나 특정 필터링 조건이 필요한 시나리오에서 코드를보다 간결하고 효율적으로 만들 수 있습니다.
관련 태그:
array_filter