我有两个数组,其中一个是另一个的“部分”。例如:
$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'));
在我的脚本中,第一个数组包含一个目录结构,其最终值是最后修改日期。当我找到更改时,我想将第二个数组中的日期值应用到原始数组中。两个数组都是动态创建的,所以我不知道任何一个数组的深度。如何将此值应用于原始数组?
答案 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());
?>