我有两个数组
$input = Array
(
[0] => Array
(
[section] => 725
[location] => New Building - 26
[rows] => DDD
[seats] => DDD
)
[1] => Array
(
[section] => 721
[location] => Helipad - II
[rows] => R1,R2
[seats] => S1,S2
)
[2] => Array
(
[section] => 724
[location] => NDTV Times
[rows] => R1,R2,R3
[seats] => S1,S2,S3
)
);
下面是第二个数组
$extra = Array
(
[0] => dry||Obstacles Present||yes
[1] => wet||Not Find||no
[2] => icy||||yes
[3] =>
)
和我需要所需的数组下面:
$output =Array
(
[0] => Array
(
[section] => 725
[location] => New Building - 26
[rows] => DDD
[seats] => DDD
[conditions] => dry
[obstacles] => Obstacles Present
[normal_lighting] => yes
)
[1] => Array
(
[section] => 721
[location] => Helipad - II
[rows] => R1,R2
[seats] => S1,S2
[conditions] => wet
[obstacles] => Not Find
[normal_lighting] => no
)
[2] => Array
(
[section] => 724
[location] => NDTV Times
[rows] => R1,R2,R3
[seats] => S1,S2,S3
[conditions] => icy
[obstacles] =>
[normal_lighting] => yes
)
)
我做了下面的顺序来得到想要的数组:
foreach($extra as $efk=>$efv)
{
if(!empty($efv)) {
$arr_field_value[] = explode("||", $efv);
}
}
$arr_key = array('conditions','obstacles','normal_lighting');
foreach($arr_field_value as $fv)
{
$arr_extra_field[]=array_combine($arr_key,$fv);
}
foreach($input as $k=>$v)
{
$output[]=array_merge($v,$arr_extra_field[$k]);
}
echo "<pre>"; print_r($output);
我知道这真的是一个漫长的过程,请给我建议任何聪明的方法。
你可以看到工作演示谢谢。
foreach($extra as $key => $val){
if($val !== ''){
list($conditions, $obstacles, $normal_lighting) = explode('||', $val);
$input[$key]['conditions'] = $conditions;
$input[$key]['obstacles'] = $obstacles;
$input[$key]['normal_lighting'] = $normal_lighting;
}
}
我想你是在找array_merge_recursive()
foreach ($extra as $key => &$extra_elem) {
if (!$extra_elem) {
unset($extra[$key]);
continue;
}
$extra_elem = array_combine(array(
'conditions',
'obstacles',
'normal_lighting',
), explode('||', $extra_elem));
}
$desired = array_merge_recursive($input, $extra);