【发布时间】:2010-09-30 15:39:41
【问题描述】:
$foo = array(
'1' => '2',
'3' => array(
'4' => '5'
),
'6' => array(
'7' => '8',
'9' => '10',
'11' => array(
'12' => '13',
'14' => '15'
)
)
);
$bar = array(
'1',
'6' => array(
'7',
'11' => array(
'12'
)
)
);
Foo 是一个我必须编辑的数组,Bar 是我需要做的编辑。
我必须在 Foo 数组中创建另一个元素,其中包含 Bar 中指向的元素,并从 Foo 中删除原始元素。
所以,有了数组,最终的数组应该是:
Array(
'3' => array(
'4' => '5'
),
'6' => array(
'9' => '10',
'11' => array(
'14' => '15'
)
),
'merged' => array(
'1' => '2',
'6' => array(
'7' => '8',
'11' => array(
'12' => '13'
)
)
)
)
我已经构建了这个递归函数,但仅适用于数组的第一级:
foreach($bar AS $key => $value){
if(is_array($value)){
s($foo, $key, $value);
}else{
$foo['merged'][$value] = $foo[$value];
unset($foo[$value]);
}
}
function s(&$form, $key, $value){
if(is_array($value)){
foreach($value AS $k => $v){
s($form, $k, $v);
}
}else{
$form['merged'][$value] = $form[$value];
unset($foo[$value]);
}
}
有什么想法吗?
【问题讨论】:
标签: php arrays recursion multidimensional-array