본문 바로가기
php

[php] 배열에서 값 골라내기 array_filter, array_values

by 하이바네 2022. 8. 17.
반응형

javascript에서 filter를 쓰듯이 php에서 array_filter가 있다.

 

https://www.php.net/manual/en/function.array-filter.php

 

PHP: array_filter - Manual

Depending on the intended meanings of your "empty" array values, e.g., null and empty string, vs. an integer 0 or a boolean false, be mindful of the result of different filters. null, 'nullstring' => '',  'intzero' => 0,  'stringzero' => '0', 'false' =>

www.php.net

 

만약에 다음과 같은 배열이 있다고 가정을 하고 13이상인 것을 array_filter로 뽑아낸다면 다음과 같을 것이다.

$array = [10,11,12,13,14];
//각 하나의 값에 접근하기 위해서는 $array[0], $array[1]... 형태로 접근


//13이상인 것을 뽑아낸다고 할 시 array_filter를 이용할 경우
$temp = array_filter($array, function($data){
	return $data >= 13;
});

var_dump($temp);
//$temp 출력값 : array(2) { [3]=> int(13) [4]=> int(14) }

 

우리는 13이상의 값을 가진것들을 뽑아내었다! 

 

그런데 기존 배열의 key를 그대로 가지고 있다는 점이 있다. 물론 그대로 사용해도 되지만..

 

array_values 함수를 활용하면 key를 0부터 다시 세팅된게 할 수 있다.

 

https://www.php.net/manual/en/function.array-values.php

 

PHP: array_values - Manual

This is another way to get value from a multidimensional array, but for versions of php >= 5.3.x 1 ? $val : array_pop($val);}$arr = array(    'foo' => 'foo',    'bar' => array(        'baz' => 'baz',        'candy' => 'candy',        'veget

www.php.net

 

그럼 위의 코드는 array_values를 적용 시켜서 다음과 같은 형태로 출력값이 변경된다.

$array = [10,11,12,13,14];
//각 하나의 값에 접근하기 위해서는 $array[0], $array[1]... 형태로 접근


//13이상인 것을 뽑아낸다고 할 시 array_filter를 이용할 경우
$temp = array_values(array_filter($array, function($data){
	return $data >= 13;
}));

var_dump($temp);
//$temp 출력값 : array(2) { [0]=> int(13) [1]=> int(14) }

array_filter로 딱 하나만 return 시키고 그 값에 접근 하려고 찾다보니 array_values라는 것을 알게되었다.

또 까먹으면 찾아와서 쓸듯...

728x90

댓글