2017-07-30 49 views
2

我想合并两个数组,其中有一个自定义键使用array_push,但是当我使用array_push它会删除自定义键。PHP array_push与自定义键

例如,如果我只是创建一个自定义键正常的阵列,它工作正常:

$price_arr = array(); 
$date = '2017-08-01'; 

$insert_data = array(
    $date => array(
     'adult_1' => '10' 
    ) 
); 

print_r($insert_data); 

结果是:

Array ([2017-08-01] => Array ([adult_1] => 10)) 

但是,如果我用数组推删除自定义键,例如:

$price_arr = array(); 
$date = '2017-08-01'; 

$insert_data = array(
    $date => array(
     'adult_1' => '10' 
    ) 
); 
array_push($price_arr, $insert_data); 

$insert_data = array(
    $date => array(
     'child_1' => '2' 
    ) 
); 
array_push($price_arr, $insert_data); 

print_r($price_arr); 

结果是:

Array ([0] => Array ([2017-08-01] => Array ([adult_1] => 10)) [1] => Array ([2017-08-01] => Array ([child_1] => 2))) 

我试图产生的结果是:

Array ([2017-08-01] => Array ([adult_1] => 1 [child_1] => 2)) 

任何帮助表示赞赏!

回答

2

你必须使用array_merge代替array_push

$price_arr = array(); 
$date = '2017-08-01'; 

$insert_data = array(
    $date => array(
     'adult_1' => '10' 
    ) 
); 
$price_arr = array_merge($insert_data); 

$insert_data = array(

    $date => array(
     'child_1' => '2' 
     ) 
); 

$price_arr[$date] = array_merge($price_arr[$date],$insert_data[$date]); 

echo "<pre>"; 
print_r($price_arr); 
+0

你与他的代码解决方案是非常好的:)所以upvoted。 :) –

4

为什么不只是做

$arr['custom_key'] = 'your value'; 

你不一定要使用array_push,只是分配给它,它完成。

$price_arr = array(); 
$date = '2017-08-01'; 
$price_arr[$date]['adult_1'] = 10; 
$price_arr[$date]['child_1'] = 2; 
print_r($price_arr);