如何从多维数组中选择最深的子元素,以便在php中为该特定元素添加另一个元素(始终知道它的添加位置,以防万一需要来自父元素的其他信息才能创建新的孩子)?
例如。有这样的数组我希望能够为每个添加另一个aaaa,bbbb,cccc:aaa,bbb,ccc?然后在aaaaa,bbbbb,...到每个aaaa,bbbb ......等等(每个新元素都知道它的父级名称)。
array(
"a"=> array(
"aa"=> array(
"aaa",
"bbb",
"ccc"
),
"bb"=> array(
"aaa",
"bbb",
"ccc"
),
"aa"=> array(
"aaa",
"bbb",
"ccc"
),
),
"b"=> array(
"aa"=> array(
"aaa",
"bbb",
"ccc"
),
"bb"=> array(
"aaa",
"bbb",
"ccc"
),
"aa"=> array(
"aaa",
"bbb",
"ccc"
),
),
"c"=> array(
"aa"=> array(
"aaa",
"bbb",
"ccc"
),
[…]
),
);
答案 0 :(得分:2)
您可能想要使用array_walk_recursive
。它允许您遍历多维数组的所有叶子。
function add_children(&$item, $key)
{
//Here you can change item to something else (since we use &)
$item = array('aaaa', 'bbbb', 'cccc');
}
array_walk_recursive($array, 'add_children');
Disclaimar:我还没有测试过这段代码。
答案 1 :(得分:1)
您可以使用递归。我不确定您的示例是否表明您的实际数据将如何显示,但在这种情况下,最深的元素不是数组,因此您可以执行以下操作:
<?php
$testArray = array(
'a' => array(
'aa' => array(
'aaa',
'bbb'
)
)
);
print_r(modifyArray($testArray));
function modifyArray($array)
{
foreach ($array as $key => $value) {
if (is_array($value)) {
$array[$key] = modifyArray($value);
} else {
$array[$value] = $value . substr($value, 0, 1);
unset($array[$key]);
}
}
return $array;
}