3

我想使用 foreach 循环自动将记录添加到新的关联数组中。我有一个包含以下 DOM 元素名称的数组:

$DOM = array('element2','element22','element222','element2222');

和一个新的关联数组:

$NEW = array(
    'element1' => '',
    'element2' => '',
    'element3' => array(
        'element33' => array(
            'element333' => ''
        )
    )
);

现在使用 foreach 循环将向 $NEW 数组添加一个新记录/数组:

foreach($DOM as $name){
    //Do something
}

预期结果:

$NEW = array(
    'element1' => '',
    'element2' => array(
        'element22' => array(
            'element222' => array(
                'element2222' => ''
            )
        )
    ),
    'element3' => array(
        'element33' => array(
            'element333' => ''
        )
    )
);

你可以做这样的事情吗?自动化这个过程?

4

3 回答 3

0

您可以通过将数组作为引用传递来修改 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);
于 2013-05-26T10:39:15.487 回答
0

你可以使用array_push()功能

检查这个mabe帮助:

$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‎</a>

或在这里:

www.w3schools.com/php/func_array_push.asp

于 2013-05-26T10:41:45.493 回答
0

如果我理解正确,$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);
于 2013-05-26T11:36:06.860 回答