我想使用foreach循环自动将记录添加到新的关联数组。我有一个包含以下DOM元素名称的数组:
$DOM = array('element2','element22','element222','element2222');
和一个新的关联数组:
$NEW = array(
'element1' => '',
'element2' => '',
'element3' => array(
'element33' => array(
'element333' => ''
)
)
);
现在使用foreach循环将添加一个新的记录/数组到$ new array:
foreach($DOM as $name){
//Do something
}
预期结果:
$NEW = array(
'element1' => '',
'element2' => array(
'element22' => array(
'element222' => array(
'element2222' => ''
)
)
),
'element3' => array(
'element33' => array(
'element333' => ''
)
)
);
你可以这样做吗?自动化这个过程?
如果我理解正确,$DOM
包含创建嵌套数组的键,在最深层具有空字符串值。所以你必须创建这样的数组:
$new_array = array();
$last = &$new_array;
foreach($DOM as $name){
$last[$name] = array();
$last = &$last[$name];
}
$last = '';
unset($last);
并与$NEW
递归合并:
$NEW = array_merge_recursive($NEW, $new_array);
可以使用array_push()
函数
检查这个可能的帮助:
$DOM = array('element2','element22','element222','element2222');
$NEW = array('element1' => '', 'element2' => '', 'element3' => array('element33' => array('element333' => '')));
array_push($NEW, $DOM);
print_r($NEW);
见此处:
php.net/manual/en/function.array-push.php
或此处:
www.w3schools.com/php/func_array_push.asp可以通过将数组作为引用传递给foreach循环来修改数组:
foreach($array as &$value)
$value[] = $DOM
编辑:<?php
$DOM = array('element2','element22','element222','element2222');
$NEW = array(
'element1' => '',
'element2' => '',
'element3' => array(
'element33' => array(
'element333' => ''
)
)
);
function insert(&$array, $ins) {
$element = array_shift($ins);
if($element == null) return;
foreach($array as $k => &$v) {
if($k === $element) {
$v[current($ins)] = '';
insert($v, $ins);
}
}
}
insert($NEW, $DOM);
var_dump($NEW);