使用PHP。 我有这个键和值的数组1:
$array_1 = array(
(more values)
'propub_cost_max' => 5,
'propub_cost_min' => 0.5,
'average_calc_last' => '-1 Months',
'propub_qtd_first_offer' => 4
);
和数组2:
$array_2 = array(
'propub_cost_max' => 20,
'propub_cost_min' => (no value),
'average_calc_last' => (no value),
'propub_qtd_first_offer' => (no value)
);
我想将数组2与数组1合并,所以我做了:
$result = array_merge($array_2, $array_1);
但结果是:
$result = array(
(more values)
'propub_cost_max' => 5,
'propub_cost_min' => 0.5,
'average_calc_last' => '-1 Months',
'propub_qtd_first_offer' => 4
);
propub_cost_max键应该取值20,对吗?
这个想法是保留一些值,当然,如果有任何值,则替换值不同的地方。 我认为array_merge应该可以工作,但是......
谢谢大家。
答案 0 :(得分:2)
“如果输入数组具有相同的字符串键,则后面的值 对于那个键,将覆盖前一个键。“。在你的情况下,array_1是 后者。
说nogad。
(链接到array_merge
)
还
你有一个}而不是一个括号。
正如TheValyreanGroup所述。
这两个都绝对正确。所以
$result = array_merge($array_1, $array_2);
将解决您的问题。值已交换,因此$array_2
现在将覆盖$array_1
中的值。
要解决您想要更新某些值的整体问题,而不知道要保留哪些值和哪些条件,我们将简化为不使用空值覆盖值,因此:< / p>
$array_2 = array_filter($array_2); //clears empty values
$result = array_merge($array_1, $array_2); // as before. updates non-empty new values.
答案 1 :(得分:0)
这将解决您的问题
array_merge_recursive($array_1, $array_2);