将可变级别数组应用于现有数组

时间:2013-08-29 19:26:21

标签: php arrays

我有两个数组,其中一个是另一个的“部分”。例如:

$array = array('file_name1'=>'date1',
               'file_name2'=>'date2',
               'file_name3'=> array('file_name3.1'=>'date3.1',
                                    'file_name3.2'=>'date3.2'),
               'file_name4'=>'date4');

$array_part = array('file_name3'=>array('file_name3.2'=>'date3.2.2'));

在我的脚本中,第一个数组包含一个目录结构,其最终值是最后修改日期。当我找到更改时,我想将第二个数组中的日期值应用到原始数组中。两个数组都是动态创建的,所以我不知道任何一个数组的深度。如何将此值应用于原始数组?

2 个答案:

答案 0 :(得分:1)

您很可能正在寻找array_replace_recursive

print_r(
    array_replace_recursive($array, $array_part)
);

在您的情况下给出了:

Array
(
    [file_name1] => date1
    [file_name2] => date2
    [file_name3] => Array
        (
            [file_name3.1] => date3.1
            [file_name3.2] => date3.2.2
        )

    [file_name4] => date4
)

示例代码(Demo):

<?php
/**
 * Applying a variable level array to an existing array
 *
 * @link http://stackoverflow.com/q/18519457/367456
 */

$array = array('file_name1' => 'date1',
               'file_name2' => 'date2',
               'file_name3' => array('file_name3.1' => 'date3.1',
                                     'file_name3.2' => 'date3.2'),
               'file_name4' => 'date4');

$array_part = array('file_name3' => array('file_name3.2' => 'date3.2.2'));

print_r(
    array_replace_recursive($array, $array_part)
);

答案 1 :(得分:0)

你可以使用php引用

可在此处找到数据: http://php.net/manual/en/language.references.pass.php

<?php
function foo(&$var)
{
    $var++;
}
function &bar()
{
    $a = 5;
    return $a;
}
foo(bar());
?>