배열의 키가 맞으면 리턴해주는 함수
본인이 만든 배열은 이상하거나 복잡하거나 그런것이 있을 리가 없겠지요.
하지만 json을 배열로 변경하거나 외부에서 데이터를 가져온 경우 접근 하는데 문제가 있을 수 있습니다.
그리고 json을 배열로 변환한 경우 그 안에 있는 일부만 리턴을 받아 사용하려는데 순차적으로 접근이 힘든 경우가 있는데 이런 경우 유용한 함수 입니다.
function findElements( array $array, string $keyToFind) {
$iterator = new RecursiveArrayIterator($array);
$recursive = new RecursiveIteratorIterator(
$iterator,
RecursiveIteratorIterator::SELF_FIRST
);
foreach ($recursive as $key => $value) {
if ($key === $keyToFind) {
return $value;
}
}
return null;
}
/**
* 원하는 부분의 배열을 찾아 리턴
*
* @param mixed $array
* @param string $keyToFind
* @return array|null
*/
function findElementsInArray( array $array, string $keyToFind = 'elements') {
foreach($array as $key => $value) {
if($key === $keyToFind && is_array($value) ) {
return $value;
} elseif(is_array($value)) {
$result = findElementsInArray($value, $keyToFind);
if(is_array($result)) {
return $result;
}
}
}
return null;
}
이부분은 재귀호출을 하는데 전체 배열의 키를 모두 볼 수 있는 방법에서 특정 조건이 맞으면 그 배열을 리턴해 주는 방식 입니다.
찾은 배열의 값을 리턴 할 때 재귀 호출이기 때문에 두번 들어가게 됩니다.