본문 바로가기
PROGRAMMING/PHP

PHP array_map() 콜백 함수 적용 반복문 처리

by itengineer 2023. 7. 6.
반응형

array_map() 함수는 PHP에서 사용되는 배열의 모든 요소에 대해 지정된 함수를 적용하여 새로운 배열을 생성하는 함수입니다. 이 함수는 기존 배열과 같은 크기의 배열을 반환하며, 각 요소는 지정된 함수에 의해 변환됩니다.

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

array_map(callable $callback, array $array1 [, array $... ])


- $callback: 적용할 함수 또는 메서드입니다. 이 함수는 배열의 각 요소에 대해 적용되며, 변환된 값이 새로운 배열에 저장됩니다. 이 함수는 단일 인자를 받아야 하며, 다중 배열을 처리하기 위해서는 array_map() 호출 시 다수의 배열을 전달해야 합니다.
- $array1, $array2, ...: 함수를 적용할 배열들입니다. 이러한 배열은 모두 동일한 길이를 가져야 합니다.


다음은 array_map() 함수를 사용하여 배열의 요소를 변환하는 예입니다.

$numbers = array(1, 2, 3, 4, 5);
$squaredNumbers = array_map(function ($value) {
    return $value * $value;
}, $numbers);

print_r($squaredNumbers);
// 출력
Array
(
    [0] => 1
    [1] => 4
    [2] => 9
    [3] => 16
    [4] => 25
)



위의 예제에서는 $numbers 배열의 각 요소에 제곱 연산을 적용하여 $squaredNumbers 배열을 생성합니다. 콜백 함수는 각 요소를 받아 제곱 값을 반환하며, array_map() 함수는 이러한 변환된 값을 모아서 새로운 배열을 생성합니다.

array_map() 함수는 한 개 이상의 배열을 동시에 처리할 수도 있습니다. 다음은 두 개의 배열을 동시에 처리하여 새로운 배열을 생성하는 예입니다.

$numbers1 = array(1, 2, 3);
$numbers2 = array(4, 5, 6);
$sum = array_map(function ($a, $b) {
    return $a + $b;
}, $numbers1, $numbers2);

print_r($sum);
// 출력
Array
(
    [0] => 5
    [1] => 7
    [2] => 9
)

위의 예제에서는 $numbers1 배열과 $numbers2 배열의 각 요소를 더하여 $sum 배열을 생성합니다. 콜백 함수는 두 개의 인자를 받아 덧셈 연산을 수행하고, array_map() 함수는 이러한 연산 결과를 새로운 배열로 반환합니다.

array_map() 함수를 사용하면 배열의 각 요소를 변환하고 새로운 배열을 생성할 수 있으며, 여러 개의 배열을 동시에 처리할 수도 있습니다.

 

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

 

  •  데이터 변환: 데이터베이스에서 검색한 결과나 외부 소스에서 가져온 데이터를 변환해야 할 때 array_map() 함수를 사용할 수 있습니다. 예를 들어, 사용자 이름의 대문자 버전을 생성하거나 가격을 화폐 형식으로 변환할 수 있습니다.
$users = ["john", "mary", "peter"];

// 각 사용자 이름을 대문자로 변환하여 새로운 배열 생성
$upperCaseUsers = array_map('strtoupper', $users);
// $upperCaseUsers = ["JOHN", "MARY", "PETER"]

$prices = [10.5, 20.75, 15.99];

// 각 가격을 화폐 형식으로 변환하여 새로운 배열 생성
$formattedPrices = array_map(function ($price) {
    return '$' . number_format($price, 2);
}, $prices);
// $formattedPrices = ["$10.50", "$20.75", "$15.99"]

  • 값 추출: 다차원 배열에서 특정 키의 값을 추출해야 할 때 array_map() 함수를 사용할 수 있습니다. 예를 들어, 데이터베이스 결과에서 각 행의 특정 열 값만 가져와야 할 때 유용합니다.
$records = [
    ['id' => 1, 'name' => 'John'],
    ['id' => 2, 'name' => 'Mary'],
    ['id' => 3, 'name' => 'Peter']
];

// 각 레코드의 'name' 값만 추출하여 새로운 배열 생성
$names = array_map(function ($record) {
    return $record['name'];
}, $records);
// $names = ['John', 'Mary', 'Peter']

 


  • 객체 변환: 객체 배열에서 특정 속성의 값을 추출하거나 변경해야 할 때 array_map() 함수를 사용할 수 있습니다. 예를 들어, 사용자 객체 배열에서 각 사용자의 이메일 주소만 가져오는 것이나 사용자 객체의 속성을 변경할 때 유용합니다.
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", "peter@example.com")
];

// 각 사용자 객체의 이메일 주소만 추출하여 새로운 배열 생성
$emails = array_map(function ($user) {
    return $user->email;
}, $users);
// $emails = ['john@example.com', 'mary@example.com', 'peter@example.com']




이러한 예는 array_map() 함수의 일부 활용 방법을 보여줍니다. 실제로 array_map() 함수는 배열의 요소를 변환하거나 추출하여 새로운 배열을 생성하는 데 활용될 수 있으며, 다양한 데이터 변환 및 처리 작업에 유용합니다.

반응형

댓글