0
입력 배열에서 빈 키가있는 배열을 반환하는 함수가 있습니다. 문제는 일관성없는 데이터로 작업하고 있다는 것입니다. 데이터는 중첩 배열의 모든 수준으로 이동할 수 있습니다. 예 :이 함수를 재귀 함수로 축소하는 방법은 무엇입니까?
$inputArray = [
'a' => 'value a',
'b' => [
1 => [],
2 => 'value b2',
3 => [
'x' => 'value x'
'y' => ''
],
'c' => ''
],
];
이 종류의 데이터를 문자열로 변환하는 출력이 필요합니다. 그래서,
$outputArray = [
'empty' => [
'b[1]',
'b[3][y]',
'c'
]
];
는 여기에 내가 빈 값으로 키를 얻기 위해 지금까지이 작업은 다음과 같습니다
$outputArray = [];
foreach ($inputArray as $key => $value) {
if (is_array($value)) {
foreach ($value as $index => $field) {
if (is_array($field)) {
foreach ($field as $index1 => $value1) {
if (empty($value1)) {
array_push($outputArray['empty'], $key . '[' . $index . ']' . '[' . $index1 . ']');
}
}
}
if (empty($field)) {
array_push($outputArray['empty'], $key . '[' . $index . ']');
}
}
}
if (empty($value)) {
array_push($outputArray['empty'], $key);
}
}
return $outputArray;
내가 입력 배열은 모든 수준에 중첩 될 수 있다고한다. 배열을 한 번 더 중첩 할 때마다 if (is_array)
블록을 계속 추가 할 수 없습니다. 내가 재귀 함수를 사용하여 해결 될 수 있다고 생각하지만, 나는 어떻게 알아낼 수가 없어. 이걸 도와주세요. 감사.