PHP는 두 개의 연관 어레이를 하나의 어레이로 결합합니다.

$array1 = array("$name1" => "$id1");
$array2 = array("$name2" => "$id2", "$name3" => "$id3"); 

모든 것을 조합한 새로운 어레이가 필요합니다.즉,

$array3 = array("$name1" => "$id1", "$name2" => "$id2", "$name3" => "$id3"); 

어떻게 하면 좋을까요?

죄송합니다. ID는 서로 일치하지 않지만 기술적으로 이름은 일치할 수 있지만 가능성이 낮기 때문에 모두 1개의 어레이에 나열해야 합니다.array_merge를 살펴보았지만 이것이 최선의 방법인지 확신이 서지 않았습니다.또, 이것을 어떻게 유닛으로 테스트 할 수 있습니까?



질문에 대한 답변



array_merge() 보다 효율적이지만 몇 가지 옵션이 있습니다.

$array1 = array("id1" => "value1");
$array2 = array("id2" => "value2", "id3" => "value3", "id4" => "value4");
$array3 = array_merge($array1, $array2/*, $arrayN, $arrayN*/); $array4 = $array1 + $array2;
echo '<pre>'; var_dump($array3); var_dump($array4); echo '</pre>';
// Results:
array(4) {
["id1"]=>
string(6) "value1"
["id2"]=>
string(6) "value2"
["id3"]=>
string(6) "value3"
["id4"]=>
string(6) "value4"
}
array(4) {
["id1"]=>
string(6) "value1"
["id2"]=>
string(6) "value2"
["id3"]=>
string(6) "value3"
["id4"]=>
string(6) "value4"
} 



체크 아웃 합니다.

$array3 = array_merge($array1, $array2); 



또한 원래 배열이 다른 배열에 의해 변경되어 중복된 키를 생성하지 않고=>연결을 유지합니다.

  • 다른 어레이에 동일한 키가 있으면 값이 원래 어레이를 덮어씁니다.
  • 다른 어레이의 새 키가 원래 어레이에 생성됩니다.



숀을 상대하기 위해 array_merge 주위에 랩을 사용합니다.늘 어레이에 대한 WM의 코멘트입니다.또한 중복을 삭제하고 싶은 경우도 있습니다.또, 새로운 어레이를 작성하는 것이 아니라, 어느 어레이를 다른 어레이에 통합하고 싶다고 생각하고 있습니다.그 결과는 다음과 같습니다.

/**
* Merge two arrays - but if one is blank or not an array, return the other.
* @param $a array First array, into which the second array will be merged
* @param $b array Second array, with the data to be merged
* @param $unique boolean If true, remove duplicate values before returning
*/ function arrayMerge(&$a, $b, $unique = false) {
if (empty($b)) {
return;
// No changes to be made to $a
}
if (empty($a)) {
$a = $b;
return;
}
$a = array_merge($a, $b);
if ($unique) {
$a = array_unique($a);
} } 




$array = array(
 22 => true,
 25 => true,
 34 => true,
 35 => true,
);
print_r(
 array_replace($array, [

22 => true,

42 => true,
 ])
);
print_r(
 array_merge($array, [

22 => true,

42 => true,
 ])
); 

숫자이지만 순차적 연관 배열이 아닌 경우array_replace