현재 위치: > 최신 기사 목록> PHP array_filter () 함수를 통해 배열에서 특정 요소를 유연하게 필터링하는 방법은 무엇입니까?

PHP array_filter () 함수를 통해 배열에서 특정 요소를 유연하게 필터링하는 방법은 무엇입니까?

M66 2025-07-29
<span><span><span class="hljs-meta">&lt;?php</span></span><span>
</span><span><span class="hljs-comment">// -------------------------------------------------------------</span></span><span>

</span><span><span class="hljs-comment">// PHP array_filter() 기능 소개 및 유연한 필터링 응용 프로그램</span></span><span>

</span><span><span class="hljs-comment">// -------------------------------------------------------------</span></span><span>

<span class="hljs-comment">/**
 * 존재하다 PHP 가운데,array_filter() 매우 강력한 내장 기능입니다,
 * 它能够通过回调函数对数组가운데강요进行筛选,
 * 기준을 충족하는 서브 어레이를 반환합니다,이를 통해 개발자가 데이터를 유연하게 처리 할 수 있습니다。
 * 이 기사는 자세히 소개합니다 array_filter() 사용 및 일부 실용적인 스크리닝 기술。
 */</span>

</span><span><span class="hljs-comment">// 1. 기본 사용:비어 있지 않은 요소를 필터링하십시오</span></span><span>
</span><span><span class="hljs-variable">$input</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-number">2</span></span><span>, </span><span><span class="hljs-string">''</span></span><span>, </span><span><span class="hljs-literal">null</span></span><span>, </span><span><span class="hljs-literal">false</span></span><span>, </span><span><span class="hljs-string">'hello'</span></span><span>, </span><span><span class="hljs-string">'0'</span></span><span>];
</span><span><span class="hljs-variable">$filtered</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$input</span></span><span>);
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$filtered</span></span><span>);
<span class="hljs-comment">/*
결과:
Array
(
    [1] =&gt; 1
    [2] =&gt; 2
    [6] =&gt; hello
)
*/</span>
</span><span><span class="hljs-comment">// 설명:콜백 기능이 제공되지 않는 경우,array_filter() 기본적으로 모든 것을 제거하십시오“동등합니다 false”가치。</span></span><span>

</span><span><span class="hljs-comment">// 2. 특정 조건의 요소를 필터링하기위한 사용자 정의 콜백 기능</span></span><span>
</span><span><span class="hljs-variable">$numbers</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-number">6</span></span><span>];
</span><span><span class="hljs-variable">$evenNumbers</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$numbers</span></span><span>, function(</span><span><span class="hljs-variable">$num</span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$num</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-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$evenNumbers</span></span><span>);
<span class="hljs-comment">/*
결과:
Array
(
    [1] =&gt; 2
    [3] =&gt; 4
    [5] =&gt; 6
)
*/</span>
</span><span><span class="hljs-comment">// 설명:콜백 함수가 반환됩니다 true 의 요소,false 필터링됩니다。</span></span><span>

</span><span><span class="hljs-comment">// 3. 키 이름 필터링을 사용하십시오</span></span><span>
</span><span><span class="hljs-variable">$assoc</span></span><span> = [
    </span><span><span class="hljs-string">'apple'</span></span><span> =&gt; </span><span><span class="hljs-number">3</span></span><span>,
    </span><span><span class="hljs-string">'banana'</span></span><span> =&gt; </span><span><span class="hljs-number">5</span></span><span>,
    </span><span><span class="hljs-string">'cherry'</span></span><span> =&gt; </span><span><span class="hljs-number">1</span></span><span>,
    </span><span><span class="hljs-string">'date'</span></span><span> =&gt; </span><span><span class="hljs-number">7</span></span><span>,
];
</span><span><span class="hljs-comment">// 키 이름 길이만이 더 큽니다5강요</span></span><span>
</span><span><span class="hljs-variable">$filteredByKey</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$assoc</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-title function_ invoke__">strlen</span></span><span>(</span><span><span class="hljs-variable">$key</span></span><span>) &gt; </span><span><span class="hljs-number">5</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">$filteredByKey</span></span><span>);
<span class="hljs-comment">/*
결과:
Array
(
    [banana] =&gt; 5
    [cherry] =&gt; 1
)
*/</span>

</span><span><span class="hljs-comment">// 4. 다층 배열 필터 예제</span></span><span>
</span><span><span class="hljs-variable">$users</span></span><span> = [
    [</span><span><span class="hljs-string">'name'</span></span><span> =&gt; </span><span><span class="hljs-string">'Alice'</span></span><span>, </span><span><span class="hljs-string">'age'</span></span><span> =&gt; </span><span><span class="hljs-number">23</span></span><span>, </span><span><span class="hljs-string">'active'</span></span><span> =&gt; </span><span><span class="hljs-literal">true</span></span><span>],
    [</span><span><span class="hljs-string">'name'</span></span><span> =&gt; </span><span><span class="hljs-string">'Bob'</span></span><span>, </span><span><span class="hljs-string">'age'</span></span><span> =&gt; </span><span><span class="hljs-number">30</span></span><span>, </span><span><span class="hljs-string">'active'</span></span><span> =&gt; </span><span><span class="hljs-literal">false</span></span><span>],
    [</span><span><span class="hljs-string">'name'</span></span><span> =&gt; </span><span><span class="hljs-string">'Charlie'</span></span><span>, </span><span><span class="hljs-string">'age'</span></span><span> =&gt; </span><span><span class="hljs-number">27</span></span><span>, </span><span><span class="hljs-string">'active'</span></span><span> =&gt; </span><span><span class="hljs-literal">true</span></span><span>],
];
</span><span><span class="hljs-comment">// 더 오래된 것을 필터링하십시오25활성 사용자</span></span><span>
</span><span><span class="hljs-variable">$activeAdults</span></span><span> = </span><span><span class="hljs-title function_ invoke__">array_filter</span></span><span>(</span><span><span class="hljs-variable">$users</span></span><span>, function(</span><span><span class="hljs-variable">$user</span></span><span>) {
    </span><span><span class="hljs-keyword">return</span></span><span> </span><span><span class="hljs-variable">$user</span></span><span>[</span><span><span class="hljs-string">'age'</span></span><span>] &gt; </span><span><span class="hljs-number">25</span></span><span> &amp;&amp; </span><span><span class="hljs-variable">$user</span></span><span>[</span><span><span class="hljs-string">'active'</span></span><span>] === </span><span><span class="hljs-literal">true</span></span><span>;
});
</span><span><span class="hljs-title function_ invoke__">print_r</span></span><span>(</span><span><span class="hljs-variable">$activeAdults</span></span><span>);
<span class="hljs-comment">/*
결과:
Array
(
    [2] =&gt; Array
        (
            [name] =&gt; Charlie
            [age] =&gt; 27
            [active] =&gt; 1
        )
)
*/</span>

</span><span><span class="hljs-comment">// 5. 예방 조치 및 성능 제안</span></span><span>
</span><span><span class="hljs-comment">// - array_filter 배열은 다시 표시되지 않습니다,원래 키 이름을 유지하십시오。</span></span><span>
</span><span><span class="hljs-comment">// - 연속 인덱싱이 필요한 경우,협력 할 수 있습니다 array_values 사용。</span></span><span>
</span><span><span class="hljs-comment">// - 존재하다处理大数组时,콜백 함수 로직을 가능한 한 단순화하십시오,성능 병목 현상을 피하십시오。</span></span><span>

</span><span><span class="hljs-comment">// 요약:</span></span><span>
</span><span><span class="hljs-comment">// array_filter() 예 PHP 가운데筛选数组元素的利器,콜백 함수의 유연한 정의,</span></span><span>
</span><span><span class="hljs-comment">// 다양한 복잡한 선별 요구 사항을 달성 할 수 있습니다,코드 단순성과 가독성을 향상시킵니다。</span></span><span>

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