PHP에서 2개의 어레이를 연결할 수 없습니다.
최근에 PHP의 + 연산자를 사용하여 2개의 어레이를 결합하는 방법을 배웠습니다.
하지만 이 코드를 생각해 보세요...
$array = array('Item 1');
$array += array('Item 2');
var_dump($array);
출력은
array(1) { [ 0 ] = > string(6) "Item 1"
왜 이게 안 되는 거죠?속기 생략 및 사용$array = $array + array('Item 2')동작하지 않습니다.열쇠와 관련이 있나요?
둘 다 열쇠가 있다0어레이를 조합하는 방법은 중복됩니다.사용해보십시오.array_merge()대신.
$arr1 = array('foo'); // Same as array(0 => 'foo')
$arr2 = array('bar'); // Same as array(0 => 'bar')
// Will contain array('foo', 'bar');
$combined = array_merge($arr1, $arr2);
어레이 내의 요소가 다른 키를 사용하고 있는 경우,+연산자가 더 적합할 것입니다.
$arr1 = array('one' => 'foo');
$arr2 = array('two' => 'bar');
// Will contain array('one' => 'foo', 'two' => 'bar');
$combined = $arr1 + $arr2;
편집: 명확하게 하기 위해 코드 스니펫을 추가했습니다.
사용하다array_merge()
다음 문서를 참조하십시오.
http://php.net/manual/en/function.array-merge.php
하나 이상의 배열 요소를 병합하여 하나의 값이 이전 배열의 끝에 추가되도록 합니다.결과 배열을 반환합니다.
IMO 이전 답변 중 일부는 올바르지 않습니다. (오래된 답변부터 최신 답변으로 정렬할 수 있습니다.)
array_merge() 는 어레이를 실제로 Marge합니다.즉, 어레이에 공통 항목이 있는 경우 복사본 중 하나가 생략됩니다.에 대해서도 마찬가지입니다.+(조합).
이 문제에 대한 "회피책"을 찾지 못했습니다만, 수동으로 하려면...
여기 있습니다.
<?php
$part1 = array(1,2,3);
echo "array 1 = \n";
print_r($part1);
$part2 = array(4,5,6);
echo "array 2 = \n";
print_r($part2);
$ans = NULL;
for ($i = 0; $i < count($part1); $i++) {
$ans[] = $part1[$i];
}
for ($i = 0; $i < count($part2); $i++) {
$ans[] = $part2[$i];
}
echo "after arrays concatenation:\n";
print_r($ans);
?>
splat(또는 스프레드) 연산자를 사용합니다.
$animals = ['dog', 'cat', 'snake', 'pig', 'chicken'];
$fruits = ['apple', 'banana', 'water melon'];
$things = [...$animals, ...$fruits];
출처 : https://www.kindacode.com/article/merging-arrays-in-php-7/
+는 Union 연산자로 불리며 Connectation 연산자와 다릅니다(PHP에는 배열용 연산자가 없습니다).설명에는 다음과 같이 명시되어 있습니다.
+ 연산자는 나머지 키의 요소를 오른쪽 배열에서 왼쪽 배열에 추가하지만 중복된 키는 덮어쓰지 않습니다.
예를 들어 다음과 같습니다.
$a = array("a" => "apple", "b" => "banana");
$b = array("a" => "pear", "b" => "strawberry", "c" => "cherry");
$c = $a + $b;
array(3) {
["a"]=>
string(5) "apple"
["b"]=>
string(6) "banana"
["c"]=>
string(6) "cherry"
}
두 어레이 모두 키를 사용하여1개의 엔트리가 있기 때문에0결과는 예상대로입니다.
연결하려면 을 사용합니다.
array_merge를 시도합니다.
$array1 = array('Item 1');
$array2 = array('Item 2');
$array3 = array_merge($array1, $array2);
어느 쪽에도 키를 할당하지 않기 때문에 둘 다 0의 키를 가지고 있고 +는 재인덱스를 하지 않기 때문에 덮어쓰기를 시도하고 있다고 생각합니다.
그것은 정말로 중요한 갈등이다.어레이를 연결할 때 중복 키는 덮어쓰지 않습니다.
대신 다음 명령어를 사용해야 합니다.
$array = array_merge(array('Item 1'), array('Item 2'));
$array = array('Item 1');
array_push($array,'Item 2');
또는
$array[] = 'Item 2';
이는 비관련 어레이에 적용됩니다.
while(($item = array_shift($array2)) !== null && array_push($array1, $item));
말해 봐
$array[] = array('Item 2');
어레이에 어레이를 추가하려고 하는 것처럼 보이지만,$array[][]이치노
연산자 . $array3 = $array1을 사용할 수 있습니다.$array2;
언급URL : https://stackoverflow.com/questions/2650177/cant-concatenate-2-arrays-in-php
'programing' 카테고리의 다른 글
| Java를 사용하여 이미지 높이와 폭을 얻는 방법은 무엇입니까? (0) | 2023.01.16 |
|---|---|
| ES6에서 "엄격한 사용"을 사용하는 것은 권장되지 않습니다. (0) | 2023.01.16 |
| JavaScript에서 지정된 문자 앞에 있는 하위 문자열을 어떻게 잡습니까? (0) | 2023.01.16 |
| mariadb 모듈을 가져올 수 없습니다. (0) | 2023.01.16 |
| "RuntimeError: 반복 중 사전 크기 변경" 오류를 방지하는 방법 (0) | 2023.01.16 |