본문 바로가기
PROGRAMMING/PHP

PHP array_walk() 배열 콜백함수 적용

by itengineer 2023. 7. 11.
반응형

array_walk() 함수는 PHP에서 사용되는 배열의 각 요소에 대해 지정된 콜백 함수를 적용하는 함수입니다. 이 함수를 사용하면 배열의 모든 요소를 반복하면서 사용자 정의 동작을 수행할 수 있습니다.

다음은 array_walk() 함수의 구문입니다.

array_walk(array &$array, callable $callback [, mixed $userdata = NULL ]) : bool


- &$array: 작업을 수행할 배열입니다. 참조로 전달되므로 원래 배열이 수정됩니다.
- $callback: 각 요소에 적용할 콜백 함수입니다. 이 함수는 각 요소의 값을 변경하거나 다른 작업을 수행할 수 있습니다.
- $userdata (옵션): 콜백 함수에 전달할 사용자 정의 데이터입니다. 콜백 함수에서 이 데이터를 사용할 수 있습니다.

다음은 array_walk() 함수를 사용하여 배열의 각 요소를 출력하는 예시입니다.

$fruits = array('apple', 'banana', 'cherry');

function printItem($item, $key) {
    echo $key . ': ' . $item . '<br>';
}

array_walk($fruits, 'printItem');

 

출력

0: apple
1: banana
2: cherry


위의 예시에서는 $fruits 배열을 array_walk() 함수를 사용하여 각 요소를 출력합니다. printItem() 콜백 함수는 각 요소의 값을 $item 매개변수로 받아 출력하고, $key 매개변수로 요소의 키(key)를 받아 출력합니다. array_walk() 함수가 호출되면 배열의 각 요소가 콜백 함수에 전달되어 출력됩니다.

array_walk() 함수를 사용하여 배열의 각 요소에 대해 사용자 정의 동작을 수행할 수 있습니다. 콜백 함수에서는 요소의 값을 변경하거나 다른 작업을 수행할 수도 있으며, 사용자 정의 데이터도 전달할 수 있습니다.

 

다음은 array_walk() 함수를 사용한 몇 가지 예입니다.

  • 배열 요소 수정: 배열의 각 요소를 수정하거나 변환해야 할 때 array_walk() 함수를 사용할 수 있습니다. 예를 들어, 문자열 배열의 모든 요소를 대문자로 변경하거나, 숫자 배열의 요소에 함수를 적용하여 변환할 수 있습니다.
$fruits = ['apple', 'banana', 'orange'];

// 배열의 각 요소를 대문자로 변경
array_walk($fruits, function (&$value) {
    $value = strtoupper($value);
});
// $fruits = ['APPLE', 'BANANA', 'ORANGE']

$numbers = [1, 2, 3, 4, 5];

// 배열의 각 요소에 제곱 함수를 적용하여 변환
array_walk($numbers, function (&$value) {
    $value = pow($value, 2);
});
// $numbers = [1, 4, 9, 16, 25]

  • 배열 요소 검증: 배열의 각 요소가 특정 조건을 만족하는지 확인해야 할 때 array_walk() 함수를 사용할 수 있습니다. 예를 들어, 사용자 객체 배열에서 유효한 이메일 주소를 가진 사용자를 필터링할 수 있습니다.

class User {
    public $name;
    public $email;

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

$users = [
    new User('John', 'john@example.com'),
    new User('Mary', 'mary@example.com'),
    new User('Peter', 'invalid-email')
];

// 배열의 각 사용자 객체에서 유효한 이메일 주소를 가진 사용자 필터링
array_walk($users, function ($user) {
    if (!filter_var($user->email, FILTER_VALIDATE_EMAIL)) {
        $user->email = 'N/A';
    }
});
// $users = [
//     User('John', 'john@example.com'),
//     User('Mary', 'mary@example.com'),
//     User('Peter', 'N/A')
// ]

 


  • 추가 작업 수행: 배열의 각 요소에 대해 추가 작업을 수행해야 할 때 array_walk() 함수를 사용할 수 있습니다. 예를 들어, 파일 경로 배열을 사용하여 파일을 읽거나 데이터베이스에서 검색된 결과를 처리할 수 있습니다.
$files = ['/path/to/file1.txt', '/path/to/file2.txt', '/path/to/file3.txt'];

// 배열의 각 파일 경로를 사용하여 파일 읽기
array_walk($files, function ($file) {
    $content = file_get_contents($file);
    // 파일 내용을 처리하거나 분석
});



이러한 예는 array_walk() 함수의 일부 활용 방법을 보여줍니다. 실제로 array_walk() 함수는 배열의 각 요소에 대해 작업을 수행하고 변경하는 데 유용하며, 다양한 데이터 처리 및 작업 흐름 제어 작업에 활용될 수 있습니다.

반응형

댓글