유

유용한 함수 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-04-26 조회 3,778
12-04-24 조회 3,180
12-04-23 조회 4,529
12-04-22 조회 3,219
12-04-19 조회 3,298
12-04-18 조회 4,360
12-04-18 조회 3,070
12-04-17 조회 3,340
12-04-17 조회 5,100
12-04-16 조회 3,510
12-04-13 조회 3,045
12-04-09 조회 3,115
12-04-04 조회 3,892
12-04-01 조회 3,177
12-03-31 조회 3,557
12-03-30 조회 3,177
12-03-30 조회 3,838
12-03-26 조회 3,454
12-03-26 조회 3,024
12-03-22 조회 3,178
12-03-21 조회 3,033
12-03-19 조회 3,448
12-03-17 조회 3,479
12-03-14 조회 3,206
12-03-10 조회 3,886
12-03-09 조회 3,468
12-03-09 조회 3,294
12-03-08 조회 3,768
12-03-08 조회 3,925
12-03-08 조회 4,031
12-03-03 조회 3,254
12-03-02 조회 4,608
12-02-28 조회 3,128
12-02-27 조회 2,931
12-02-25 조회 3,105
12-02-24 조회 3,808
12-02-23 조회 3,080
12-02-22 조회 3,605
12-02-22 조회 5,375
12-02-22 조회 3,946
12-02-22 조회 4,265
12-02-18 조회 3,749
12-02-17 조회 2,964
12-02-17 조회 3,377
12-02-14 조회 3,456
12-02-13 조회 3,330
12-02-10 조회 1만
12-02-08 조회 2,996
12-02-07 조회 3,334
12-02-06 조회 3,055
12-02-05 조회 3,526
12-01-31 조회 3,458
12-01-30 조회 9,633
12-01-29 조회 3,777
12-01-26 조회 3,394
12-01-25 조회 3,993
12-01-24 조회 3,387
12-01-10 조회 3,711
12-01-10 조회 4,453
12-01-09 조회 3,252
12-01-08 조회 7,109
12-01-08 조회 3,630
12-01-07 조회 5,146
12-01-04 조회 3,868
12-01-02 조회 3,089
12-01-02 조회 3,145
12-01-02 조회 3,452
12-01-01 조회 3,080
11-12-31 조회 3,382
11-12-31 조회 3,060
11-12-30 조회 3,232
11-12-30 조회 3,379
11-12-29 조회 3,583
11-12-28 조회 3,685
11-12-26 조회 3,256
11-12-23 조회 3,482
11-12-22 조회 3,007
11-12-15 조회 4,102
11-12-08 조회 3,931
11-12-05 조회 3,269
11-12-04 조회 5,687
11-12-03 조회 3,539
11-12-02 조회 3,327
11-12-01 조회 5,395
11-11-30 조회 2,872
11-11-30 조회 2,785
11-11-28 조회 3,126
11-11-26 조회 3,297
11-11-25 조회 3,316
11-11-24 조회 2,939
11-11-22 조회 3,008
11-11-22 조회 2,862
11-11-17 조회 2,791
11-11-11 조회 2,805
11-11-09 조회 2,860
11-11-08 조회 3,233
11-11-08 조회 2,523
11-11-04 조회 3,603
11-11-01 조회 2,913
11-10-26 조회 2,497