>백엔드 개발 >PHP 튜토리얼 >PHP에서 배열을 병합하는 두 가지 방법에 대한 자세한 설명

PHP에서 배열을 병합하는 두 가지 방법에 대한 자세한 설명

墨辰丷
墨辰丷원래의
2018-05-30 15:32:171640검색

PHP에서 두 개의 배열을 결합하기 위해 + 또는 array_merge를 사용할 수 있다는 것은 누구나 알고 있지만, 둘 사이에는 여전히 차이점이 있으며 이러한 차이점을 명확하게 이해하지 못하면 프로젝트에 치명적일 것입니다! 이 기사에서는 PHP에서 배열을 병합하는 두 가지 방법을 요약하고 소개합니다. 필요한 친구들이 참고할 수 있습니다.

머리말

이전에도 배열 병합을 위해 array_merge() 함수를 사용해왔는데, 최근 이직하면서 배열 병합에 대한 면접 질문을 접하게 되었습니다. 두 배열을 먼저 문자열로 변환한 후 병합한 다음 배열 출력으로 변환하는 것이었습니다. 면접관은 이 아이디어가 옳지 않다고 말했습니다. 그 후 bulabula는 배열의 기본에 대해 이야기했는데 실제로는 경험상의 문제였습니다. 아니면 코드를 너무 적게 써서 다른 방법이 생각나지 않네요. 오늘 바이두에서 검색해 보니 '+' 기호가 있군요, array_merge()这个函数,但最近我在换工作的时候遇到一道合并数组的面试题,我当时想的是将两个数组先转化为字符串,合并后再转化为数组输出,面试官说这个思路不太对,完了bulabula讲了一下数组基础的东西,然后确实是因为经验问题,或者是代码写太少,想不到还有什么方法,今天我百度了一下,原来还有‘+'号,

array_merge_recursive() ,也是可以用来合并数组的,根据我的记忆,我把那道题写出来看一下:

$a = array('color'=>'red',5,6); 
$b = array('color'=>'blue','type'=>'fruit',6,7); 
$arr = array_merge($a,$b); 
var_dump($arr);

array (size=6)
 'color' => string 'blue' (length=4)
 0 => int 5
 1 => int 6
 'type' => string 'fruit' (length=5)
 2 => int 6
 3 => int 7

要求是在不使用array_merge()的情况的得到相同的效果;

array_merge()合并数组会把前一个数组中关联形式数组的键值相同的覆盖,索引形式的则按键值顺序合并在一起)

1.先用array_merge_recursive()函数来合并一下:

$a = array('color'=>'red',5,6);
$b = array('color'=>'blue','type'=>'fruit',6,7);
$arr = array_merge_recursive($a,$b);
var_dump($arr);

输出结果:

array (size=6)
 'color' => 
 array (size=2)
  0 => string 'red' (length=3)
  1 => string 'blue' (length=4)
 0 => int 5
 1 => int 6
 'type' => string 'fruit' (length=5)
 2 => int 6
 3 => int 7

从结果可以看出array_merge_recursive()函数会把键值相同的值以一个新的关联数组的形式返回,并以这个键值作为二维数组的键值,其他索引形式则不会受影响。

比起array_merge()的话就不会出现后面的数组键和前一个相同就把前一个的值覆盖的情况了。

2.再看下‘+'号合并数组的情况:

$a = array('color'=>'red',5,6);
$b = array('color'=>'blue','type'=>'fruit',6,7);
$arr = $a+$b;
var_dump($arr);

输出结果:

array (size=4)
 'color' => string 'red' (length=3)
 0 => int 5
 1 => int 6
 'type' => string 'fruit' (length=5)

从这个结果可以看出,使用‘+'号合并数组,是前面覆盖后面的,和array_merge()相反,而且它比array_merge()

array_merge_recursive() , 내 기억에 따르면 질문을 작성하고 살펴보겠습니다.

rrreee


rrreee

요구사항은 array_merge()를 사용하지 않는 것입니다. 해당 상황에서는 동일한 효과를 얻을 수 있습니다.
(array_merge() 배열을 병합하면 동일한 키 값을 덮어쓰게 됩니다. ​​​​이전 배열의 관련 양식 배열을 삭제하고 인덱스 양식은 키 값 순서대로 이를 병합합니다. )

1 먼저 array_merge_recursive() 함수를 사용하여 병합합니다.

rrreee

출력 결과:

rrreee

array_merge_recursive() 함수가 실행되는 결과를 보면 알 수 있습니다. 동일한 키 값을 가진 값을 새로운 연관 배열 형태로 반환하며, 이 키 값을 2차원 배열의 키 값으로 사용하면 다른 인덱스 형태는 영향을 받지 않습니다.

🎜🎜array_merge()와 비교했을 때, 후속 배열 키가 이전 배열 키와 같을 경우 이전 배열의 값을 덮어쓰는 상황은 없습니다. 🎜🎜🎜🎜2 '+' 기호로 배열을 병합하는 상황을 살펴보겠습니다. 🎜🎜🎜

🎜rrreee🎜🎜🎜출력 결과: 🎜

🎜 rrreee🎜🎜 🎜이 결과에서 볼 수 있듯이 '+' 기호를 사용하여 배열을 병합하는 것은 array_merge()의 반대이며 array_merge()의 반대이며 array_merge() , 배열의 내용이 인덱스 형식으로 나타나는 경우 병합 후 키 값이 동일하면 덮어쓰게 됩니다! 🎜🎜위 내용은 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다. 🎜🎜🎜🎜🎜관련 권장 사항: 🎜🎜🎜 PHP가 인터페이스 기술을 기반으로 다형성 응용 프로그램을 구현하는 방법 🎜🎜🎜🎜🎜 PHP가 특정 키 값에 따라 다차원 배열 정렬을 구현하는 방법 🎜🎜🎜🎜🎜PHP가 타사 인스턴트를 구현합니다. 물류 업데이트에 액세스🎜🎜🎜🎜🎜🎜🎜🎜🎜

위 내용은 PHP에서 배열을 병합하는 두 가지 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.