⚠ 이 글은 2년 이상 지난 이야기에요. 읽으실때 참고!
개발
PHP 개발 일지
PHP 배열, 다중배열속의 값 검사
436 views as of March 4, 2019.
PHP는 배열안의 데이터를 검사하는 메소드가 언어에서 지원해주는것이 있습니다.
검사할 데이터와 대상 배열을 파라미터로 전달해주면 배열을 순차적으로 검사 후 데이터의 유무에 따라 논리값을 반환해요.
거기에 좀만 응용해서 다시 메소드로 감싸서 논리값에 따라 내가 필요한 결과 스트링값을 아래와 같이 바꿔줄 수 있어요.
<?php
/**
* in_array($needle, $haystack) 결과값에 따라 반환하는 값을 세번째 인수값으로 반환합니다.
* 결과값이 FALSE면 "" 빈 스트링값을 반환합니다.
* @param $needle
* @param $haystack
* @param $result
* @return string
*/
function in_array_result($needle, $haystack, $result) {
if (in_array($needle, $haystack))
return $result;
return '';
}
Copy
근데 만약에 다중배열에서 배열값을 검사해야될때는 어떻게 할까요?
아쉽게도 PHP는 1차원 배열에서의 값 검사 메소드만 지원하고있습니다. 조금 응용을 하면 아래와 같이 다중배열에서의 in_array 메소드도 구축할 수 있습니다.
배열 안의 값이 또 배열일 경우에는 재귀함수로 다음 값을 순차적으로 검색합니다.
조금 복잡해보이지만 재귀함수의 구조만 파악할 수 있다면 별로 어려운 로직이 아님을 알 수 있을꺼에요. 마찬가지로 응용또한 가능할것이구요.
<?php
/**
* in_array() 함수의 다차원 배열용 재귀함수 입니다.
* @param $needle
* @param $haystack
* @param bool $strict
* @return bool
*/
function in_array_recursive($needle, $haystack, $strict = FALSE) {
foreach ($haystack as $item) {
if (($strict ? $item === $needle : $item == $needle) || (is_array($item) && in_array_recursive($needle, $item, $strict)))
return true;
}
return false;
}
Copy
마지막으로 위의 in_array_result 처럼 다중배열에서도 아래와 같이 반환값을 내가 원하는 스트링 값으로 대체할 수 있습니다.
<?php
/**
* in_array() 함수의 다차원 배열용 재귀함수 결과값에 따라 반환하는 값을 세번째 인수값으로 반환합니다.
* 결과값이 FALSE면 "" 빈 스트링값을 반환합니다.
* @param $needle
* @param $haystack
* @param $result
* @param bool $strict
* @return string
*/
function in_array_recursive_result($needle, $haystack, $result, $strict = FALSE) {
if (in_array_recursive($needle, $haystack, $strict))
return $result;
return '';
}
Copy
야-호!
#개발 #PHP #다중배열 #in_array
0
개의 댓글
Collection. PHP 개발 일지
01.
PHP 개행문자(엔터)나 특정 태그를 제거하는 방법
2018
02.
PHP 배열, 다중배열속의 값 검사
2019
03.
PHP 시간 차 계산
2019
04.
PHP 공인 IP 주소 얻어오기
2019
05.
PHP 문자열 중 url만 걸러내서 태그를 씌워 반환
2019
06.
PHP 파일 열고 처음부터 다시 쓰기
2019
07.
PHP 세션 유지시간 변경
2019
08.
PHP 이미지 용량 리사이징
2019
09.
PHP 사이트맵 제작 (1)
2024
10.
PHP 사이트맵 제작 (2)
2024