2016-11-06 2 views
0

PHPを使用しています。 私は、このキーと値を持つ配列1を持っている:PHPのarray_mergeが動作しない

$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) 
); 

私はので、私がやった配列1と配列2をマージしたい:

$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

あなたはかっこの代わりに '}'を使います。 – TheValyreanGroup

+3

"入力配列に同じ文字列キーがある場合、そのキーの後の値は前の値を上書きします。" http://php.net/manual/en/function.array-merge.php。あなたの場合array_1は後者です – nogad

+0

ありがとうございます@TheValyreanGroup –

答えて

1

"入力配列に同じ文字列キーがある場合、そのキーの後の値 は前の文字列を上書きします。"あなたのケースではarray_1は です。

セイズnogad。代わりに、括弧の

array_mergeへのリンク)

あなたが持っています}。

TheValyreanGroupと書かれています。

これらはどちらも間違いありません。したがって

$result = array_merge($array_1, $array_2); 

問題を解決します。値がスワップされるので、$array_2$array_1の値を上書きします。

$array_2 = array_filter($array_2); //clears empty values 
$result = array_merge($array_1, $array_2); // as before. updates non-empty new values. 
を: 一部値を更新したいのあなたの全体的な問題を解決するために

は、その値と保持したい条件を知らなくても、我々は単にので、空のものを使用して値を上書きしないように減少しています

+0

'}'は明らかにコピーエラーです。そうでなければ、スクリプトは実行されず、結果がまったく得られません。 – Barmar

+0

これはこのテストケースの問題を解決しますが、一般的な場合の望ましい動作はおそらくmaxが2つの値のうち大きい方の値を取得することです。 –

+0

@Barmarでもそうだけど、誤ってタイプミスするとエラーを引き起こすことが多いので、コメントアウトしておくと価値があると思う。自分自身を解決する。 – Martin