현재 위치: > 최신 기사 목록> Array_Filter 함수의 기본 사용 및 매개 변수는 무엇입니까? Array_Filter를 올바르게 사용하는 방법에 대한 자세한 분석

Array_Filter 함수의 기본 사용 및 매개 변수는 무엇입니까? Array_Filter를 올바르게 사용하는 방법에 대한 자세한 분석

gitbox 2025-07-26

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>

매개 변수 설명 :

  1. 배열 (필수)
    필터링 작업을 수행하려는 배열입니다.

  2. 콜백 (선택 사항)
    이것은 배열의 각 요소가 특정 조건을 충족하는지 여부를 결정하는 콜백 함수입니다. 이 매개 변수가 NULL 로 설정되면 Array_Filter는 Array에서 False , NULL , 0 , Emption Strings 등과 같은 모든 "빈"값을 제거합니다.

  3. 모드 (선택 사항)
    이것은 콜백 함수를 사용하여 배열 요소를 판단하는 방법을 결정하는 상수입니다. 일반적으로 사용되는 모드는 다음과 같습니다.

    • Array_filter_use_key : 콜백 함수는 값 대신 배열의 키를 수신합니다.

    • Array_filter_use_both : 콜백 함수는 키와 값을 모두 수신합니다.

기본 사용

다음은 몇 가지 일반적인 Array_Filter 사용 예제입니다.

예 1 : 배열에서 "빈"값을 필터링합니다

 <span><span><span class="hljs-meta">&lt;?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">?&gt;</span></span><span>
</span></span>

산출:

 <span><span>Array
(
    [</span><span><span class="hljs-meta">1</span></span><span>] =&gt; </span><span><span class="hljs-number">1</span></span><span>
    [</span><span><span class="hljs-meta">3</span></span><span>] =&gt; </span><span><span class="hljs-number">2</span></span><span>
    [</span><span><span class="hljs-meta">5</span></span><span>] =&gt; </span><span><span class="hljs-number">3</span></span><span>
    [</span><span><span class="hljs-meta">6</span></span><span>] =&gt; apple
    [</span><span><span class="hljs-meta">8</span></span><span>] =&gt; </span><span><span class="hljs-number">4</span></span><span>
)
</span></span>

이 예에서는 Array_Filter가 False , Null , 0 , 빈 문자 등과 같은 모든 "빈"값을 필터링합니다.

예제 2 : 콜백 함수를 사용하여 배열 필터링

 <span><span><span class="hljs-meta">&lt;?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">?&gt;</span></span><span>
</span></span>

산출:

 <span><span>Array
(
    [</span><span><span class="hljs-meta">1</span></span><span>] =&gt; </span><span><span class="hljs-number">2</span></span><span>
    [</span><span><span class="hljs-meta">3</span></span><span>] =&gt; </span><span><span class="hljs-number">4</span></span><span>
)
</span></span>

이 예에서 Array_Filter는 콜백 함수를 사용하여 배열의 각 요소가 짝수인지 확인합니다. 반환 값이 참이 되면 요소가 유지됩니다.

예 3 : array_filter_use_key를 사용하여 키에 의해 필터링됩니다

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$arr</span></span><span> = [
    </span><span><span class="hljs-string">'first'</span></span><span> =&gt; </span><span><span class="hljs-number">1</span></span><span>,
    </span><span><span class="hljs-string">'second'</span></span><span> =&gt; </span><span><span class="hljs-number">2</span></span><span>,
    </span><span><span class="hljs-string">'third'</span></span><span> =&gt; </span><span><span class="hljs-number">3</span></span><span>,
    </span><span><span class="hljs-string">'fourth'</span></span><span> =&gt; </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">?&gt;</span></span><span>
</span></span>

산출:

 <span><span>Array
(
    [</span><span><span class="hljs-meta">third</span></span><span>] =&gt; </span><span><span class="hljs-number">3</span></span><span>
    [</span><span><span class="hljs-meta">fourth</span></span><span>] =&gt; </span><span><span class="hljs-number">4</span></span><span>
)
</span></span>

이 예제는 배열 키를 기반으로 필터링하는 방법을 보여줍니다. array_filter_use_key 콜백 함수가 값 대신 배열 키를 받도록합니다.

예 4 : array_filter_use_both를 사용하여 키와 값을 모두 사용합니다.

 <span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-variable">$arr</span></span><span> = [
    </span><span><span class="hljs-string">'apple'</span></span><span> =&gt; </span><span><span class="hljs-number">5</span></span><span>,
    </span><span><span class="hljs-string">'banana'</span></span><span> =&gt; </span><span><span class="hljs-number">0</span></span><span>,
    </span><span><span class="hljs-string">'orange'</span></span><span> =&gt; </span><span><span class="hljs-number">2</span></span><span>,
    </span><span><span class="hljs-string">'grape'</span></span><span> =&gt; </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> &gt; </span><span><span class="hljs-number">1</span></span><span> &amp;&amp; </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">?&gt;</span></span><span>
</span></span>

산출:

 <span><span>Array
(
    [</span><span><span class="hljs-meta">apple</span></span><span>] =&gt; </span><span><span class="hljs-number">5</span></span><span>
    [</span><span><span class="hljs-meta">orange</span></span><span>] =&gt; </span><span><span class="hljs-number">2</span></span><span>
)
</span></span>

이 예제는 array_filter_use_both를 사용하여 콜백 함수가 키와 값으로 필터링 할 수 있도록합니다. 결과는 값이 1보다 큰 요소를 유지하고 키에 문자 'A'를 포함합니다.

주목해야 할 것

  1. 콜백 함수의 반환 값 :
    콜백 함수의 반환 값은 부울 이거나 False 여야합니다. True 가 반환되면 요소가 유지되고 False가 반환되면 제거됩니다.

  2. 성능 고려 사항 :
    Array_Filter는 확인을 위해 전체 배열을 가로 지릅니다. 배열이 매우 크고 콜백 함수가 복잡한 경우 성능에 영향을 줄 수 있습니다. 이 경우 콜백 함수를 최적화 할 수 있는지 또는 다른 방법을 사용할 수 있는지 고려하십시오.

  3. 키 홀드 :
    Array_Filter는 필터링시 원래 배열의 키를 유지합니다. 즉, 배열에서 요소를 제거하면 결과 배열의 키가 다시 표시되지 않습니다.

결론적으로

Array_Filter 는 다양한 조건에 따라 배열에서 요소를 필터링하는 데 사용할 수있는 매우 강력한 기능입니다. 기본 필터링 작업을 지원할뿐만 아니라 유연한 콜백 기능 및 여러 모드를 제공하므로 데이터를 처리 할 때보다 효율적으로 도움이됩니다. Array_Filter를 올바르게 이해하고 사용하면 특히 대규모 데이터가 처리되거나 특정 필터링 조건이 필요한 시나리오에서 코드를보다 간결하고 효율적으로 만들 수 있습니다.