ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • php array_map(), array_filter(), array_reduce(), array_walk() 함
    tmp 2024. 10. 26. 15:12

    1. array_map() 함수

    정의

    array_map() 함수는 하나 이상의 배열의 요소를 콜백 함수로 처리하여, 변환된 값을 포함하는 새로운 배열을 생성합니다.

    기본 형식

    array_map(callable $callback, array $array1, array ...$arrays): array
     
    • $callback: 배열의 각 요소를 처리할 때 호출할 함수. 이 함수는 배열의 각 요소에 대해 호출되며, 그 반환값이 새로운 배열에 포함됩니다.
    • $array1: 변환할 첫 번째 배열.
    • $arrays: 추가로 처리할 배열들. 여러 배열을 함께 처리할 수 있습니다.

    반환값

    array_map()은 콜백 함수의 처리 결과를 포함하는 새로운 배열을 반환합니다. 원본 배열은 변경되지 않습니다.


    예시

    1. 단일 배열의 각 요소에 대해 함수 적용

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

        // 각 숫자에 대해 제곱을 계산합니다.
        $squares = array_map(function($num) {
            return $num * $num;
        }, $numbers);

        print_r($squares);
     

    결과:

        [1, 4, 9, 16, 25]

        이 예제에서는 $numbers 배열의 각 요소에 대해 제곱을 계산하여 새로운 배열 $squares를 반환합니다.

     

    2. 여러 배열을 동시에 처리

        $array1 = [1, 2, 3];
        $array2 = [4, 5, 6];

        // 두 배열의 요소를 더합니다.
        $sums = array_map(function($a, $b) {
            return $a + $b;
        }, $array1, $array2);

        print_r($sums);
     

    결과:

        [5, 7, 9]

        이 예제에서는 $array1과 $array2의 각 요소를 더해서 새로운 배열 $sums를 만듭니다.

        두 배열의 첫 번째 요소끼리, 두 번째 요소끼리, 세 번째 요소끼리 각각 더해집니다.

    3. 내장 함수 사용

        array_map()은 PHP의 내장 함수도 콜백으로 사용할 수 있습니다:

        $strings = ['hello', 'world', 'php'];

        // 각 문자열을 대문자로 변환합니다.
        $uppercased = array_map('strtoupper', $strings);

        print_r($uppercased);
     

    결과:

    ['HELLO', 'WORLD', 'PHP']

    이 예제에서는 strtoupper를 사용해 문자열 배열의 각 요소를 대문자로 변환합니다.

     

    2. array_walk() 함수

    정의

    array_walk() 함수는 배열의 각 요소에 대해 콜백 함수를 호출합니다.

    배열의 값을 변경하거나 추가적인 처리를 할 때 사용할 수 있습니다.

    array_map()과 달리, 배열을 직접 수정하며, 반환값은 true 또는 false입니다.

    기본 형식

    array_walk(array &$array, callable $callback, mixed $userdata = null): bool
    • $array: 콜백 함수를 적용할 배열. 배열은 참조로 전달됩니다.
    • $callback: 배열의 각 요소에 적용할 콜백 함수. 이 함수는 두 개의 인수를 받습니다: 현재 배열 요소의 값과 키.
    • $userdata: 추가적으로 콜백 함수에 전달할 사용자 정의 데이터.

    예시

    • 각 요소에 함수 적용:array_walk()는 배열을 참조로 받아서 직접 수정합니다. 이 예제에서는 배열의 각 요소를 2배로 만듭니다.
       
       $numbers = [1, 2, 3, 4];
       array_walk($numbers, function(&$item) { $item *= 2; // 각 요소를 2배로 만듦 });
       print_r($numbers); // 결과: [2, 4, 6, 8]
    • 키와 값을 함께 사용:이 예제에서는 각 사람의 이름과 나이를 출력합니다.
      $people = ['John' => 25, 'Jane' => 28];
      array_walk($people, function($age, $name) { echo "$name is $age years old." . PHP_EOL; });

    3. array_map()과 array_walk() 비교

    • array_map():
      • 새로운 배열을 반환합니다.
      • 원본 배열을 수정하지 않고, 변환된 결과를 담은 새로운 배열을 생성합니다.
      • 다수의 배열을 동시에 처리할 수 있습니다.
    • array_walk():
      • 배열을 직접 수정합니다.
      • 참조로 배열을 받아 요소를 변경할 수 있지만, 새로운 배열을 반환하지 않습니다.
      • 단일 배열만 처리할 수 있습니다.

    예시 비교

    • array_map()은 변환된 결과를 반환하는 반면:
       
        $numbers = [1, 2, 3];
        $doubled = array_map(function($num) {
            return $num * 2;
        }, $numbers);

        print_r($doubled);  // [2, 4, 6]
    • array_walk()는 배열을 직접 수정합니다:
        $numbers = [1, 2, 3];
        array_walk($numbers, function(&$num) {
            $num *= 2;
        });

        print_r($numbers);  // [2, 4, 6]

    4. array_filter()

    정의

    array_filter() 함수는 배열의 요소를 필터링하는 데 사용됩니다.

    주어진 콜백 함수에 따라 배열의 각 요소를 검사하고, 조건에 맞는 요소만을 포함하는 새로운 배열을 반환합니다.

    기본 형식

    array_filter(array $array, callable $callback = null, int $mode = 0): array
    • $array: 필터링할 배열.
    • $callback: 각 요소를 검사하는 콜백 함수. 콜백 함수가 true를 반환하는 요소만 결과 배열에 포함됩니다. 콜백 함수를 생략하면 false로 평가되는 값을 제거합니다.
    • $mode: 콜백 함수에 전달할 인수의 형식을 결정하는 플래그 (ARRAY_FILTER_USE_KEY, ARRAY_FILTER_USE_BOTH).

    예시

    • 콜백 사용:이 예제에서는 배열 $numbers의 각 요소에 대해 콜백 함수를 호출하고, 짝수인 요소만 결과 배열에 포함합니다.
        
      $numbers = [1, 2, 3, 4, 5, 6];
        $evenNumbers = array_filter($numbers, function($num) {
            return $num % 2 === 0;  // 짝수만 필터링
        });

        print_r($evenNumbers);  // 결과: [2, 4, 6]
       
    • 콜백 생략:콜백 함수를 생략하면, false로 평가되는 요소(0, 빈 문자열, false, null)가 제거됩니다.
        
        $values = [0, 1, 2, '', false, null, 'hello'];
        $filteredValues = array_filter($values);

        print_r($filteredValues);  // 결과: [1, 2, 'hello']

    5. array_reduce()

    정의

    array_reduce() 함수는 배열의 모든 요소를 하나의 값으로 축소하는 데 사용됩니다.

    주어진 콜백 함수를 통해 배열을 누적하여 단일 값으로 반환합니다.

    기본 형식

    array_reduce(array $array, callable $callback, mixed $initial = null): mixed
    • $array: 축소할 배열.
    • $callback: 배열의 요소를 축소하는 데 사용할 콜백 함수. 이 함수는 두 개의 인수를 받습니다: 누적된 값과 현재 배열 요소.
    • $initial: 축소의 초기값. 이 값은 첫 번째 콜백 호출 전에 사용됩니다.

    예시

    • 합계 계산:여기서 $carry는 이전에 축적된 값이고, $item은 현재 배열의 요소입니다. 각 요소를 누적해 최종 합계를 구합니다.
       
        $numbers = [1, 2, 3, 4, 5];
        $sum = array_reduce($numbers, function($carry, $item) {
            return $carry + $item;
        }, 0);

        echo $sum;  // 결과: 15
       
       
    • 문자열 연결:이 예제에서는 배열의 각 문자열을 연결하여 하나의 문장으로 만듭니다.
       
        $words = ['Hello', 'world', 'PHP'];
        $sentence = array_reduce($words, function($carry, $word) {
            return $carry . ' ' . $word;
        });

        echo $sentence;  // 결과: "Hello world PHP"
       

    'tmp' 카테고리의 다른 글

    Top-level navigation  (0) 2024.11.23
    Origin 헤더에 대하여  (0) 2024.11.21
    PHP 8.2 이상에서 클래스의 프로퍼티 동적 설정 제한  (1) 2024.10.24
    parse_url() 함수  (1) 2024.10.23
    Early binding 과 Late static binding  (2) 2024.10.05

    댓글

Designed by Tistory.