如何从多维数组中选择最深的子元素,以便在php中向该特定元素添加另一个元素(始终知道它是在哪里添加的,因此,如果需要来自父级的额外信息来创建新的子元素)?
例如:有这样一个数组,我想要能够添加另一个aaa,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"
),
[…]
),
);
发布于 2015-08-16 15:17:26
您可能需要使用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');
免责声明:我还没有测试过这个代码。
发布于 2015-08-16 15:23:16
您可以对此使用递归。我不确定您的示例是否表示了实际数据的外观,但在这种情况下,最深的元素不是数组,因此您可以这样做:
<?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;
}
https://stackoverflow.com/questions/32040686
复制相似问题