4

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

$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'));

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

4

2 回答 2

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
)

示例代码(演示):

<?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)
);
于 2013-08-29T19:35:03.880 回答
0

你可以使用 php 参考

可以在这里找到数据:http: //php.net/manual/en/language.references.pass.php

<?php
function foo(&$var)
{
    $var++;
}
function &bar()
{
    $a = 5;
    return $a;
}
foo(bar());
?>
于 2013-08-29T19:29:45.907 回答