带有自定义键

时间:2017-07-30 04:56:30

标签: php arrays

我正在尝试使用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 ) ) 

任何帮助表示赞赏!

2 个答案:

答案 0 :(得分: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);

答案 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);