현재 위치: > 최신 기사 목록> Array_Filter () 객체 배열을 처리하는 방법

Array_Filter () 객체 배열을 처리하는 방법

M66 2025-06-04

Array_Filter () 는 PHP에서 매우 일반적으로 사용되는 기능으로, 콜백 함수를 기반으로 배열에서 요소를 필터링하는 데 사용됩니다. 배열을 Array_Filter () 로 전달하면 배열을 반복하고 제공하는 콜백 함수의 반환 값에 따라 어떤 요소가 보존되고 어떤 요소가 제거되는지 결정합니다. Array_Filter () 의 적용의 대부분은 간단한 배열을 처리하는 데 중점을 두지 만 객체가 포함 된 배열에 적용될 때 동작에는 특별한 것들이 있습니다.

Array_Filter () 기본 사용

먼저, array_filter () 의 기본 사용법을 살펴 보겠습니다.

 array_filter(array $array, callable $callback = null, int $mode = 0): array
  • $ 배열 : 입력 배열 필터.

  • $ 콜백 : 콜백 함수 각 요소가 기준을 충족하는지 여부를 결정합니다.

  • $ 모드 :이 매개 변수는 반환 된 배열의 키 값이 유지되는지 또는 다시 표시되는지 여부를 결정합니다.

콜백 함수가 제공되지 않으면 Array_Filter ()는 배열의 모든 요소를 ​​False 의 값으로 제거합니다.

 $array = [0, 1, 2, 3, 4, 5];
$result = array_filter($array);
// 산출 [1, 2, 3, 4, 5]

Array_Filter ()는 객체 배열을 처리합니다

배열의 요소가 객체 인 경우 array_filter ()는 일반 배열을 처리 할 때와 동일하게 작동하지만 콜백 함수는 각 객체를 인수로 수신합니다. 따라서 콜백 함수에서 객체의 속성에 따라 객체를 유지할지 여부를 결정할 수 있습니다.

예 : 객체 배열 필터링

여러 사용자 객체가 포함 된 배열이 있다고 가정하고 각 사용자 객체에는 이름연령 속성이 있습니다. 18 세 이상의 사용자를 걸러 내고 싶습니다.

 class User {
    public $name;
    public $age;

    public function __construct($name, $age) {
        $this->name = $name;
        $this->age = $age;
    }
}

$users = [
    new User('Alice', 25),
    new User('Bob', 17),
    new User('Charlie', 30),
    new User('David', 15)
];

$filteredUsers = array_filter($users, function($user) {
    return $user->age > 18;
});

foreach ($filteredUsers as $user) {
    echo $user->name . " is over 18 years old.\n";
}

결과:

 Alice is over 18 years old.
Charlie is over 18 years old.

위의 예에서는 콜백 함수를 통해 18 세 이상의 사용자를 필터링합니다. 콜백 함수는 사용자 객체를 매개 변수로 받아들이고 객체가 $ user-> age를 통해 조건을 충족하는지 여부를 결정합니다.

참고 : 객체 비교

객체가 배열 요소 인 경우 array_filter ()는 전체 객체를 콜백 함수로 전달합니다. PHP에서 객체 비교는 일반적으로 참조로 수행되므로 객체의 속성을 비교하려면 콜백 함수에서 객체의 속성을 명시 적으로 추출해야합니다.

예 : 객체의 속성을 확인합니다

또한 이름 에 특정 문자가 포함 된 객체를 걸러 낼 수도 있습니다. 예를 들어, 우리는 이름에 문자 "a"가 포함 된 사용자 만 걸러 내려고합니다.

 $filteredUsers = array_filter($users, function($user) {
    return strpos($user->name, 'a') !== false;
});

foreach ($filteredUsers as $user) {
    echo $user->name . " has an 'a' in their name.\n";
}

결과:

 Alice has an 'a' in their name.
Charlie has an 'a' in their name.

이 예에서는 사용자 이름에 strpos () 함수를 통해 문자 "a"가 포함되어 있는지 확인합니다.

Array_Filter () 및 객체 참조

Array_Filter ()가 객체 배열을 처리 할 때 배열의 각 객체의 요소는 여전히 참조로 전달됩니다. 콜백 함수에서 객체의 속성을 수정하면 이러한 수정은 원래 배열의 객체에 영향을 미칩니다. PHP 객체가 참조로 전달되기 때문입니다.

예 : 객체의 속성을 수정하십시오

 $filteredUsers = array_filter($users, function($user) {
    if ($user->age > 18) {
        $user->age += 1;  // 객체의 속성을 수정하십시오
        return true;
    }
    return false;
});

foreach ($filteredUsers as $user) {
    echo $user->name . " is now " . $user->age . " years old.\n";
}

결과:

 Alice is now 26 years old.
Charlie is now 31 years old.

이 예에서는 콜백 함수를 통해 18 세 이상의 사용자의 연령 속성을 수정 하고이 수정은 원래 배열에 영향을 미칩니다.

Array_Filter () URL 관련 작업

객체 배열에서 작업 할 때 URL을 사용해야 할 수도 있습니다. 예를 들어 URL에 특정 도메인 이름이 포함 된 개체를 필터링해야 할 수도 있습니다. URL 처리가 콜백 기능에 관여하는 경우 도메인 이름을 M66.NET 으로 바꾸면됩니다.

객체에 사용자의 개인 웹 사이트를 나타내는 웹 사이트 속성이 있다고 가정 해 봅시다. 다음 방법으로 필터링 할 수 있습니다.