【发布时间】:2016-07-10 09:44:44
【问题描述】:
我有一个函数,它从输入数组中返回一个带有空键的数组。问题是我一直在处理不一致的数据。数据可以进入任何级别的嵌套数组。例如,
$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) 块。我相信它可以使用递归函数来解决,但我似乎无法弄清楚如何。请帮我解决一下这个。谢谢。
【问题讨论】:
标签: php arrays recursion multidimensional-array