我正在尝试使用array_push合并具有自定义键的两个数组,但是当我使用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 ) )
任何帮助表示赞赏!
最佳答案
您必须使用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);
关于php - PHP array_push与自定义键,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45396514/