유

유용한 함수 array_filter

유용한 함수 array_filter

(PHP 4 >= 4.0.6, PHP 5)

array_filter — Filters elements of an array using a callback function

배열의 각 원소들을 콜백 함수의 인자로 각각 넣어서 함수의 결과값이 true(1) 인것만 뽑아서 배열로 반환.

array array_filter ( array $input [, callback $callback ] )



예제

function odd($var){

    // returns whether the input integer is odd, $var 가 홀수 일경우 1 을 반환, 짝수일 경우 0 을 반환
    return($var & 1);
}

function even($var){

    // returns whether the input integer is even, $var 가 짝수 일경우 true 를 반환, 홀수 일경우 false 를 반환
    return(!($var & 1));
}

$array1 = array("a"=>1, "b"=>2, "c"=>3, "d"=>4, "e"=>5);
$array2 = array(6, 7, 8, 9, 10, 11, 12);

echo "Odd :\n";
print_r(array_filter($array1, "odd"));
echo "Even:\n";
print_r(array_filter($array2, "even"));



결과

Odd :
Array
(
    [a] => 1
    [c] => 3
    [e] => 5
)
Even:
Array
(
    [0] => 6
    [2] => 8
    [4] => 10
    [6] => 12
)



참고 - 콜백함수 란
간단하게 설명하면. 특정 함수 내에서 처리 과정 내에서 자동적으로 호출 되어 사용되는 함수

즉 array_filter 를 직접 구현해 보면

function array_filter_test($array, $function=''){

    if (!is_array($array)) return Array();

    $return = Array();
    foreach($array as $k => $v){

        if (!empty($function)) $result = call_user_func($function, $v);//여기서 콜백 함수가 사용됨
        else $result = !empty($v);

        if (!empty($result)) $return[$k] = $v;
    }

    return $return;
}


echo "Odd :\n";
print_r(array_filter_test($array1, "odd"));
echo "Even:\n";
print_r(array_filter_test($array2, "even"));
|

댓글 9개

어렵네요 ㅎㅎ
추천합니다.
어려울거 없어요.......

특정 배열이 잇을때
그 배열의 값들 중 내가 원하는 것만 뽑겟다 할때 사용하는것이에요.

원하는 값을 찾는 것은 콜백 함수가 하는 것이구요.

위의 예제는 홀수 인것만, 짝수인것만 뽑는 것이지만
특정숫자로 나누어서 나머지가 얼마인것만 뽑아오라던지..
여러가지에 활용할수 있습니다.
초보라서 외계어로 보입니다 ㅠㅠ
음 초보 아닌것 같던데........

기능구현 보다 기초가 중요합니다.
네, 기초가 안되서 초보라는것이지요 ㅠㅠ
기능구현도 잘 하는 축이 아니구 ㅠㅠ
왕 추 천 !!!!!!!!!!!
고맙습니다. !!!!!!!!!!1
알아놓으면 유용하게 쓰일 수 있겠네요..
모르면 필요할때마다 함수만든다고 삽질할텐데..
열심히 배우겠습니다....^^
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

8,188건
+
제목 글쓴이 날짜 조회
12-01-08 조회 3,001
12-01-07 조회 3,616
12-01-07 조회 3,075
12-01-07 조회 2,985
12-01-07 조회 2,954
12-01-07 조회 5,195
12-01-06 조회 2,727
12-01-06 조회 3,446
12-01-06 조회 2,938
12-01-06 조회 2,890
12-01-06 조회 2,898
12-01-06 조회 5,602
12-01-06 조회 3,635
12-01-06 조회 2,851
12-01-06 조회 2,964
12-01-05 조회 3,024
12-01-05 조회 3,045
12-01-05 조회 2,759
12-01-05 조회 2,844
12-01-05 조회 3,490
12-01-05 조회 5,339
12-01-04 조회 3,781
12-01-04 조회 2,798
12-01-04 조회 2,740
12-01-04 조회 2,949
12-01-04 조회 2,790
12-01-04 조회 2,879
12-01-04 조회 3,024
12-01-04 조회 2,778
12-01-04 조회 5,196
12-01-04 조회 5,075
12-01-04 조회 2,933
12-01-04 조회 3,387
12-01-04 조회 3,062
12-01-04 조회 2,879
12-01-04 조회 5,382
12-01-04 조회 4,553
12-01-04 조회 4,029
12-01-04 조회 3,899
12-01-04 조회 2,732
12-01-03 조회 3,618
12-01-03 조회 2,602
12-01-03 조회 2,631
12-01-03 조회 2,628
12-01-02 조회 3,125
12-01-02 조회 3,181
12-01-02 조회 4,027
12-01-02 조회 2,991
12-01-02 조회 3,202
12-01-02 조회 3,487
12-01-02 조회 3,481
12-01-01 조회 2,692
12-01-01 조회 4,153
12-01-01 조회 3,118
12-01-01 조회 3,496
11-12-31 조회 3,426
11-12-31 조회 3,759
11-12-31 조회 3,862
11-12-31 조회 3,111
11-12-31 조회 3,269
11-12-31 조회 3,680
11-12-30 조회 3,939
11-12-30 조회 3,223
11-12-30 조회 3,274
11-12-30 조회 3,921
11-12-30 조회 5,104
11-12-30 조회 4,211
11-12-30 조회 4,372
11-12-30 조회 3,828
11-12-30 조회 3,557
11-12-30 조회 3,578
11-12-30 조회 3,429
11-12-30 조회 2,628
11-12-30 조회 3,790
11-12-30 조회 7,064
11-12-29 조회 3,643
11-12-29 조회 3,314
11-12-29 조회 2,984
11-12-29 조회 3,185
11-12-29 조회 3,056
11-12-28 조회 2,674
11-12-28 조회 2,814
11-12-28 조회 2,951
11-12-28 조회 2,862
11-12-28 조회 3,728
11-12-27 조회 3,078
11-12-27 조회 2,842
11-12-27 조회 2,741
11-12-27 조회 2,871
11-12-26 조회 3,204
11-12-26 조회 3,107
11-12-26 조회 3,686
11-12-26 조회 3,304
11-12-26 조회 5,857
11-12-25 조회 3,024
11-12-23 조회 3,568
11-12-23 조회 3,522
11-12-23 조회 5,108
11-12-23 조회 4,759
11-12-23 조회 2,825