array_filter - 배열의 빈요소 제거, 배열값 필터
페이지 정보
작성자 서방님 댓글 0건 조회 136회 작성일 16-07-28 14:49본문
1. Description
- array_filter($arr[ ,$callback])
- 용도 :배열의 원소값을 필터
- 파라메터 :[array] $arr => 필터링할 배열값
[function] $callback => 배열을 필터링할 함수. - 리턴값 :$callback 함수로 필터링된 배열값을 리턴
- 설명 :첫번째 파라메터값인 $arr 배열을 루프돌며 $callback 함수를 실행.
이때 $callback 함수는 배열의 각 row를 파라메터로 인식하여 실행되며
함수의 결과값이 true 인 경우 배열값을 유지하고 false 인경우 배열값을 필터한다.
$callback 함수는 선택적 인자값으로 만약 null 값인 경우
배열값의 유무만 판단하여 true, false 를 리턴하기 때문에 빈 배열을 삭제할때 편리하다.
2. Example
ㄱ. 빈배열 제거
$arr = array('a', 'b', '', 'd', '', 'f', '', 'h'); print_r($arr); // 결과값 : Array ( [0] => a [1] => b [2] => [3] => d [4] => [5] => f [6] => [7] => h ) $arr = array_filter($arr); print_r($arr); // 결과값 : Array ( [0] => a [1] => b [3] => d [5] => f [7] => h )
ㄴ. PHP 내장 함수로 필터 (ex : 배열값중 숫자값만 필터)
$arr = array(1, 'a', 2, 'b', 3, 'c', 4, 'd'); print_r($arr); // 결과값 : Array ( [0] => 1 [1] => a [2] => 2 [3] => b [4] => 3 [5] => c [6] => 4 [7] => d ) $arr = array_filter($arr, 'is_numeric'); print_r($arr); // 결과값 : Array ( [0] => 1 [2] => 2 [4] => 3 [6] => 4 )
ㄷ. 특정값 필터 (ex : Y, N중 Y값만 필터)
$arr = array('Y', 'Y', 'N', 'Y', 'N', 'Y', 'N', 'N'); print_r($arr); // 결과값 : Array ( [0] => Y [1] => Y [2] => N [3] => Y [4] => N [5] => Y [6] => N [7] => N ) $arr = array_filter($arr, function ($var){ return $var == 'Y' ? true : false; }); print_r($arr); // 결과값 : Array ( [0] => Y [1] => Y [3] => Y [5] => Y )
ㄹ. 외부선언 함수로 특정값 필터 (ex : Y, N중 N값만 필터)
function check_n($val){ return $val == 'N' ? true : false; } $arr = array('Y', 'Y', 'N', 'Y', 'N', 'Y', 'N', 'N'); print_r($arr); // 결과값 : Array ( [0] => Y [1] => Y [2] => N [3] => Y [4] => N [5] => Y [6] => N [7] => N ) $arr = array_filter($arr, 'check_n'); print_r($arr); // 결과값 : Array ( [2] => N [4] => N [6] => N [7] => N )
ㅁ. 2차배열 특정값 필터 (ex : 배열값중 gender값이 man값만 필터)
$arr = array( array('name' => 'tester1', 'gender' => 'man'), array('name' => 'tester2', 'gender' => 'woman'), array('name' => 'tester3', 'gender' => 'woman'), array('name' => 'tester4', 'gender' => 'man'), array('name' => 'tester5', 'gender' => 'man') ); print_r($arr); /* 결과값 : Array ( [0] => Array ( [name] => tester1 [gender] => man ) [1] => Array ( [name] => tester2 [gender] => woman ) [2] => Array ( [name] => tester3 [gender] => woman ) [3] => Array ( [name] => tester4 [gender] => man ) [4] => Array ( [name] => tester5 [gender] => man ) ) */ $arr = array_filter($arr, function ($row){ return $row['gender'] == 'man' ? true : false; }); print_r($arr); /* 결과값 : Array ( [0] => Array ( [name] => tester1 [gender] => man ) [3] => Array ( [name] => tester4 [gender] => man ) [4] => Array ( [name] => tester5 [gender] => man ) ) */
ㅂ. 연관배열의 2차배열 특정값 필터 (ex : 배열값중 gender값이 woman값만 필터)
$arr = array( 'tester1' => array('gender' => 'man'), 'tester2' => array('gender' => 'woman'), 'tester3' => array('gender' => 'woman'), 'tester4' => array('gender' => 'man'), 'tester5' => array('gender' => 'man') ); print_r($arr); /* 결과값 : Array ( [tester1] => Array ( [gender] => man ) [tester2] => Array ( [gender] => woman ) [tester3] => Array ( [gender] => woman ) [tester4] => Array ( [gender] => man ) [tester5] => Array ( [gender] => man ) ) */ $arr = array_filter($arr, function ($row){ return $row['gender'] == 'woman' ? true : false; }); print_r($arr); /* 결과값 : Array ( [tester2] => Array ( [gender] => woman ) [tester3] => Array ( [gender] => woman ) ) */
댓글목록
등록된 댓글이 없습니다.