我想在PHP中循环一个数组。循环必须是递归的,因为我现在没有多少个数组中的数组。它用于阅读Symfony2中的翻译。
输出格式为:
a.d.e
a.f.g
b.h.i
c.j.k.l.m
c.n.o
示例数组:
$array = array(
'a' => array('d' => 'e', 'f' => 'g'),
'b' => array('h' => 'i'),
'c' => array(
'j' => array(
'k' => array(
'l' => 'm')),
'n' => 'o'));
我已尝试过以下内容,但这不是最终解决方案,但递归工作正常:
function displayArrayRecursively($array)
{
foreach ($array as $key => $value) {
if (is_array($value)) {
echo $key . '<br>';
displayArrayRecursively($value);
} else {
echo $key . '<br>' . $value . '<br>';
}
}
}
提前致谢!
答案 0 :(得分:0)
我猜你的功能只是输出
a
d
e
...
这样的事情应该有效:
displayArrayRecursively($array, null);
function displayArrayRecursively($array, $keysString = '')
{
if (is_array($array)) {
foreach ($array as $key => $value) {
displayArrayRecursively($value, $keysString . $key . '.');
}
} else {
echo $keysString . $array . '<br/> ';
}
}
它应该非常接近你需要的东西。
答案 1 :(得分:0)
此功能可以满足您的需求:
function displayArrayRecursively($array, $tree = array()) {
foreach ($array as $key => $value) {
if (is_array($value)) {
displayArrayRecursively($value, array_merge($tree, array($key)));
} else {
print implode('.', array_merge($tree, array($key, $value)));
print "\n<br />";
}
}
}
输出:
a.d.e
a.f.g
b.h.i
c.j.k.l.m
c.n.o
答案 2 :(得分:0)
你想要的功能
function displayArrayRecursively($array, $parent = '')
{
foreach ($array as $key => $value) {
if (is_array($value)) {
if(count($value) == 1 && !empty($parent))
$key = $parent . $key;
displayArrayRecursively($value, $key);
} else {
echo $parent;
echo $key . $value . '<br>';
}
}
}