PHP array_merge不工作

时间:2016-11-06 20:16:06

标签: php arrays array-merge

使用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应该可以工作,但是......

谢谢大家。

2 个答案:

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