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

유용한 함수 array_filter 입니다.

· 9년 전 · 423

유용한 함수 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"));

댓글 작성

댓글을 작성하시려면 로그인이 필요합니다.

로그인하기

게시글 목록

번호 제목
19384
27584
6013
6004
27572
5997
5992
5981
5964
5952
5948
5941
5937
5934
5931
19383
5926
5923
5913
24558
5912
30895
27563
5907
5903
5900
27556
5898
24555
5894
5893
5890
5884
27537
5881
5878
30888
30884
5876
5874
27524
27514
19379
19377
27509
5869
5866
27505
5865
5860
5857
27503
27481
27462
5856
19511
27458
24547
19374
19373
19371
27453
19370
27449
27441
19366
24544
19365
19361
19360
19358
19356
19354
19351
19348
19346
19339
19334
5849
27439
5846
27434
27429
19331
19329
19328
5841
5840
19326
5834
5831
5826
19324
5821
32040
27426
19320
5816
32030
5815