2016-11-06 2 views
0

PHP를 사용하여 작업하십시오. 내가 배열 1로 배열 2를 병합 할PHP array_merge가 작동하지 않습니다.

$array_2 = array(
'propub_cost_max' => 20, 
'propub_cost_min' => (no value), 
'average_calc_last' => (no value), 
'propub_qtd_first_offer' => (no value) 
); 

그래서 내가했다 :

$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 :

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

그러나 나는이 키와 값이 배열 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