array_filter - 배열의 빈요소 제거, 배열값 필터
작성일 16-07-28 14:49
페이지 정보
작성자서방님 조회 382회 댓글 0건본문
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 )
)
*/
댓글목록
등록된 댓글이 없습니다.
