Php 添加到数组子元素
如何从多维数组中选择最深的子元素,以便在php中将另一个元素添加到该特定元素中(始终知道它添加的位置,以防需要父元素的附加信息来创建新的子元素) 有一个这样的数组,我想在每个数组中添加另一个aaaa,bbbb,cccc:aaa,bbb,ccc?然后是aaaaa,bbbbb,…到每个aaaa,bbbb…等等(每个新元素都知道它的父元素的名称) 您可能想使用。它允许您对多维数组的所有叶进行排序Php 添加到数组子元素,php,arrays,Php,Arrays,如何从多维数组中选择最深的子元素,以便在php中将另一个元素添加到该特定元素中(始终知道它添加的位置,以防需要父元素的附加信息来创建新的子元素) 有一个这样的数组,我想在每个数组中添加另一个aaaa,bbbb,cccc:aaa,bbb,ccc?然后是aaaaa,bbbbb,…到每个aaaa,bbbb…等等(每个新元素都知道它的父元素的名称) 您可能想使用。它允许您对多维数组的所有叶进行排序 function add_children(&$item, $key) { //Here
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');
免责声明:我没有测试过这段代码。您可以使用递归。我不确定您的示例是否指示了实际数据的外观,但在本例中,最深的元素不是数组,因此您可以这样做:
<?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;
}
真正的例子更容易理解(至少对我来说)array\u walk\u递归听起来非常适合这个。据我所知,它只访问叶节点。是否还有一种方法可以循环通过每个可能的路径,以防需要来自父节点的附加信息来创建新的子节点?您是正确的,因为它只访问叶节点。我理解你的问题,因为它是目前提出的,这应该是足够的,所以我不会编辑我的答案。如果您需要关于叶的“路径”的信息,您将需要切换方法并实现自己的递归。这个问题可能会提供一些指导。
<?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;
}