array_filter - 배열의 빈요소 제거, 배열값 필터 > php

본문 바로가기
사이트 내 전체검색

php

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 )
	) 
*/

 

 

댓글목록

등록된 댓글이 없습니다.

Total 612건 15 페이지
게시물 검색

회원로그인

접속자집계

오늘
166
어제
163
최대
1,347
전체
154,700
Latest Crypto Fear & Greed Index

그누보드5
Copyright © 서방님.kr All rights reserved.