질문을 삭제하지 말아주세요.!
 
1
0
-1
<?php
/**
 * $min 보다 큰 항목만 걸러내는 익명 필터 함수를 만든다.
 */
function criteria_greater_than($min)
{
    return function($item) use ($min) {
        return $item > $min;
    };
}

$input = array(1, 2, 3, 4, 5, 6);

// 동적으로 만들어낸 필터 함수를 array_filter 에 전달해서 입력을 필터링한다.
$output = array_filter($input, criteria_greater_than(3));

print_r($output); // 3보다 큰 숫자만 출력된다.



// 익명 함수를 하나 만들어서 변수에 대입
$filter_even = function($item) {
    return ($item % 2) == 0;
};

// array_filter 내장 함수는 배열과 함수를 인자로 받는다.
$output = array_filter($input, $filter_even);

// 익명 함수를 변수에 할당해서 전달할 필요없이 이렇게 하는 것도 가능하다.
$output = array_filter($input, function($item) {
    return ($item % 2) == 0;
});

print_r($output);


아직 공부가 부족하여 정확히 뭐라고 불러야 되는지도 잘 몰라서 질문 내용 자체가 이상할 수 있다는 점 양해 부탁 드립니다.

위 예시에서 익명 함수 혹은 람다 함수(question)를 인자로 받아 사용할 수 있는 array_filter와 같은 함수를 소개하고 있는데, 이러한 함수를 사용자 정의 함수로 선언하려면 어떤 식으로 해야 될까요?

예시와 함께 설명해주시면 감사하겠습니다..

    CommentAdd your comment...

    2 answers

    1.  
      1
      0
      -1

      질문에 대한 답이 맞는지 모르겠는데요. 제가 쓴 책 부록에 나오는 예제입니다. 아래 링크로 남겨드립니다.


      https://appkr.github.io/l5book-snippets/draft/b0-php.html#b9-클로저

        CommentAdd your comment...
      1.  
        1
        0
        -1

        좋은 예시로는 laravel에서 제공되는 helper 함수들이 있습니다. 

        https://laravel.kr/docs/5.5/helpers#method-value

        if (! function_exists('value')) {
            /**
             * Return the default value of the given value.
             *
             * @param  mixed  $value
             * @return mixed
             */
            function value($value)
            {
                return $value instanceof Closure ? $value() : $value;
            }
        }
          CommentAdd your comment...