테스트 사이트 - 개발 중인 베타 버전입니다

유용한 함수 array_filter

· 13년 전 · 1377 · 9
유용한 함수 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
13년 전
알아놓으면 유용하게 쓰일 수 있겠네요..
모르면 필요할때마다 함수만든다고 삽질할텐데..
열심히 배우겠습니다....^^

게시글 목록

번호 제목
15265
26093
15262
3437
15257
3429
15256
15252
15251
15250
15246
15242
3425
3418
15236
3411
15233
15229
15228
15226
3399
15224
15217
15195
15193
3373
3360
15188
29852
15181
15159
3350
15158
15157
15152
15150
3334
15144
15140
3331
15136
29848
15129
15107
3320
15106
15095
29847
15094
3314
15091
15089
29834
15088
3303
15085
15084
26091
15083
15073
15071
3290
24301
15067
3285
3270
15064
29829
15062
15053
3261
3252
3249
15050
3243
15046
24291
24278
3231
15042
24275
3225
26075
15041
3222
3218
15025
15024
15018
29821
15015
15013
15012
3210
3200
3198
24274
15005
3188
15001