> 백엔드 개발 > PHP 튜토리얼 > PHP 함수 탐색-array_filter()

PHP 함수 탐색-array_filter()

WBOY
풀어 주다: 2023-06-20 08:02:01
원래의
1654명이 탐색했습니다.

PHP 프로그래밍에서 배열은 가장 일반적이고 중요한 데이터 유형 중 하나입니다. PHP의 함수 라이브러리는 다양한 배열 처리 함수도 제공하며, 중요한 함수 중 하나는 array_filter()입니다. 이 글에서는 array_filter() 함수의 일반적인 사용법과 구현 원칙을 살펴보겠습니다. array_filter()。本文将探究 array_filter() 函数的常见用法和实现原理。

基本用法

array_filter() 函数的主要作用是过滤数组中的元素。在使用时,我们需要传入一个数组作为第一个参数,并可选地传入第二个参数回调函数用于对元素进行过滤。回调函数是一个可选的参数,如果不传入,则默认会过滤掉所有的为“假”的元素,如 nullfalse0'' 等。

下面是一个简单的示例,演示了如何使用 array_filter() 函数对数组进行过滤:

// 定义一个示例数组
$numbers = array(100, 2, -3, 4, 5, -6);

// 过滤回调函数,过滤掉小于等于 0 的元素
function positive($n) {
    return $n > 0;
}

// 过滤数组
$filtered = array_filter($numbers, "positive");

// 打印过滤后的数组
print_r($filtered);
로그인 후 복사

在上述示例中,我们定义了一个 $numbers 数组,其中包含了一些数字元素。我们同时定义了一个回调函数 positive(),该函数的作用是,当元素值大于 0 时返回 true,否则返回 false。最后,我们调用 array_filter() 函数并传入了数组 $numbers 和回调函数 positive(),以此来过滤数组。运行上述示例会输出以下结果:

Array
(
    [0] => 100
    [1] => 2
    [3] => 4
    [4] => 5
)
로그인 후 복사

可以看到,最终 $filtered 数组中只保留了数字元素的正数部分,符合回调函数的过滤条件。

除了传入回调函数之外,array_filter() 函数还支持传入一个额外的参数,该参数将作为回调函数的第二个参数传入。这在某些情况下可以有用,例如,在过滤数组时需要用数组元素的下标作为参考条件。下面是一个使用 $key 参数的示例:

// 定义一个示例数组
$fruits = array("apple", "banana", "cherry", "date");

// 过滤回调函数,过滤掉下标是偶数的元素
function odd_indices($value, $index) {
    return $index % 2 != 0;
}

// 过滤数组,并保留下标是奇数的元素
$filtered = array_filter($fruits, "odd_indices", ARRAY_FILTER_USE_BOTH);

// 打印过滤后的数组
print_r($filtered);
로그인 후 복사

在上述示例中,我们定义了一个 $fruits 数组,该数组包含了一些水果元素。我们还定义了一个回调函数 odd_indices(),该函数会将下标为偶数的数组元素过滤掉。最后,我们传入了 ARRAY_FILTER_USE_BOTH 参数,来指定回调函数需要两个参数。运行上述示例会输出以下结果:

Array
(
    [1] => banana
    [3] => date
)
로그인 후 복사

可以看到,最终的 $filtered 数组只保留了下标是奇数的元素,而偶数下标的元素被过滤掉了。

实现原理

理解 array_filter() 函数是如何实现的,也有助于我们更好地使用它。在 PHP 实现中,array_filter() 函数主要通过遍历数组来实现过滤。在实际过程中,当我们传入一个回调函数时,array_filter() 函数会对数组中的每一个元素都调用一次该回调函数。如果回调函数返回 true,则表示这个元素需要保留下来,否则会被过滤掉。

还有一些需要注意的地方,如当回调函数返回空值时,该元素也会被过滤掉。此外,如果传入了额外的参数,则该参数将作为回调函数的第二个参数传入回调函数中。

当我们不传入回调函数时,默认过滤掉所有“假”的元素(例如:nullfalse0、空字符串等)。在实现中,array_filter() 函数会将所有元素转换为布尔值,然后再进行过滤。如果元素转换后为 true,则表示该元素保留下来;否则,过滤掉该元素。

虽然 array_filter() 函数的实现看起来很简单,但是它提供了一种方便且强大的方法来过滤数组元素。对于 PHP 开发人员,熟练掌握 array_filter()

기본 사용법

array_filter() 이 함수의 주요 기능은 배열의 요소를 필터링하는 것입니다. 이를 사용할 때 첫 번째 매개변수로 배열을 전달하고 선택적으로 요소를 필터링하기 위한 두 번째 매개변수 콜백 함수를 전달해야 합니다. 콜백 함수는 선택적 매개변수입니다. 전달되지 않으면 null, false, 0, <code>'' 등 🎜🎜다음은 array_filter() 함수를 사용하여 배열을 필터링하는 방법을 보여주는 간단한 예입니다. 🎜rrreee🎜위 예에서는 다음을 포함하는 $numbers 배열을 정의했습니다. 숫자 요소. 또한 콜백 함수 positive()를 정의했습니다. 이 함수의 기능은 요소 값이 0보다 크면 true를 반환하고, 그렇지 않으면 false . 마지막으로 <code>array_filter() 함수를 호출하고 $numbers 배열과 콜백 함수 긍정적()을 전달하여 배열을 필터링합니다. 위 예제를 실행하면 다음과 같은 결과가 출력됩니다. 🎜rrreee🎜보시다시피 숫자 요소의 양수 부분만 최종 $filtered 배열에 유지되며 이는 콜백의 필터링 조건을 충족합니다. 기능. 🎜🎜콜백 함수 전달 외에도 array_filter() 함수는 콜백 함수의 두 번째 매개변수로 전달될 추가 매개변수 전달도 지원합니다. 이는 배열을 필터링하고 배열 요소의 첨자를 참조 조건으로 사용해야 하는 경우와 같은 특정 상황에서 유용할 수 있습니다. 다음은 $key 매개변수를 사용하는 예입니다. 🎜rrreee🎜위 예에서는 일부 과일 요소가 포함된 $fruits 배열을 정의했습니다. 또한 짝수 인덱스가 있는 배열 요소를 필터링하는 콜백 함수 odd_indices()를 정의합니다. 마지막으로 콜백 함수에 두 개의 매개변수가 필요함을 지정하기 위해 ARRAY_FILTER_USE_BOTH 매개변수를 전달합니다. 위 예제를 실행하면 다음과 같은 결과가 출력됩니다. 🎜rrreee🎜보시다시피 최종 $filtered 배열은 홀수 첨자가 있는 요소만 유지하고 짝수 첨자가 있는 요소는 필터링됩니다. 🎜

구현 원리

🎜 array_filter() 함수가 어떻게 구현되는지 이해하는 것도 함수를 더 잘 사용하는 데 도움이 됩니다. PHP 구현에서 array_filter() 함수는 주로 배열을 순회하여 필터링을 구현합니다. 실제 프로세스에서 콜백 함수를 전달할 때 array_filter() 함수는 배열의 각 요소에 대해 한 번씩 콜백 함수를 호출합니다. 콜백 함수가 true를 반환하는 경우 이는 이 요소를 유지해야 함을 의미하며, 그렇지 않으면 필터링됩니다. 🎜🎜콜백 함수가 null 값을 반환하는 경우 요소도 필터링되는 등 몇 가지 주의할 사항도 있습니다. 또한, 추가 매개변수가 전달되면 해당 매개변수는 콜백 함수의 두 번째 매개변수로 콜백 함수에 전달됩니다. 🎜🎜콜백 함수를 전달하지 않으면 기본적으로 모든 "false" 요소가 필터링됩니다(예: null, false, 0) code>, 빈 문자열 등). 구현 시 <code>array_filter() 함수는 필터링하기 전에 모든 요소를 ​​부울 값으로 변환합니다. 변환 후 요소가 true이면 해당 요소가 유지된다는 의미입니다. 그렇지 않으면 해당 요소가 필터링됩니다. 🎜🎜array_filter() 함수의 구현은 간단해 보이지만 배열 요소를 필터링하는 편리하고 강력한 방법을 제공합니다. PHP 개발자의 경우 array_filter() 함수의 사용 및 구현 원리를 숙지하면 실제 개발 시 많은 편의성을 얻을 수 있습니다. 🎜

위 내용은 PHP 함수 탐색-array_filter()의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿