Menu

PHP 배열 추가 array_push(): 요소 넣는 방법

array_push($arr, $value)는 배열 끝에 값을 하나 이상 추가합니다. $arr[] = $value는 값 하나에 대해 같은 일을 하며 더 빠릅니다. 배열의 끝, 처음, 중간에 추가하는 방법, 키와 값 추가, 반환값을 대입하는 고전적인 버그 피하기를 알아봅니다.

이 페이지에는 실행 가능한 에디터가 있습니다 - 편집하고 실행하면 결과를 바로 볼 수 있습니다.

array_push($arr, $value)는 배열 끝에 값을 추가합니다. 값 하나라면 축약형 $arr[] = $value;가 함수 호출 없이 같은 일을 하며, 대부분의 PHP 코드가 이 방식을 씁니다. 둘 다 원래 배열을 바꿉니다.

array_push()는 배열을 참조로 받으므로 전달한 변수를 수정합니다. 새 요소 개수를 반환하지만 무시해도 됩니다.

array_push와 $arr[] = 비교

값 하나에는 $arr[] = $value를 쓰세요. 더 짧고 함수 호출이 없어서 큰 반복문 안에서는 차이가 쌓입니다. 한 문장으로 여러 값을 추가하거나 값 목록을 펼쳐 넣을 때는 array_push()를 쓰세요.

$arr[] =는 아직 존재하지 않는 변수에도 동작하며, PHP가 배열을 만들어 줍니다. array_push()는 기존 배열이 필요합니다. 정의되지 않은 변수에 쓰면 TypeError: array_push(): Argument #1 ($array) must be of type array, null given을 던집니다.

키와 값 추가하기

array_push()는 다음 정수 키로 값을 덧붙이기만 합니다. 이름 있는 키를 추가하려면 그 키에 대입하세요. 여러 쌍을 한 번에 추가하려면 +=(기존 키 유지)나 array_merge()(새 값이 이김)를 쓰세요.

키가 겹칠 때 +와 array_merge()의 차이는 array_merge 페이지에서 다룹니다.

맨 앞에 추가하기: array_unshift

array_unshift($arr, $value)는 처음에 삽입합니다. 정수 키는 다시 매겨져 새 값이 인덱스 0을 가지며, 문자열 키는 그대로입니다. array_push()처럼 여러 값을 받고 새 개수를 반환합니다.

이름 있는 쌍을 맨 앞에 두려면 새 배열을 만드세요: $menu = ['login' => '/login'] + $menu;.

특정 위치에 삽입하기

array_splice($arr, $offset, 0, $values)는 아무것도 지우지 않고 삽입합니다. $offset에서 시작해 0개의 요소를 지우고 그 자리에 새 값을 넣습니다. 삽입 지점 이후의 정수 키는 다시 매겨집니다.

array_splice()는 요소를 지우고 바꾸는 일도 할 수 있습니다. 그 형태는 요소 제거 페이지에서 볼 수 있습니다.

다른 배열 덧붙이기

array_push($a, $b)는 $b를 중첩된 요소 하나로 추가하는데, 이는 원하는 결과가 아닌 경우가 대부분입니다. $b의 값을 하나씩 추가하려면 펼쳐 넣거나, 스프레드 문법이나 array_merge()로 새 배열을 만드세요.

흔한 실수: 반환값 대입하기

array_push()는 새 요소 개수라는 숫자를 반환합니다. 이를 배열 변수에 다시 대입하면 배열이 정수로 바뀌고, 그 변수에 다음 array_push()를 하면 TypeError가 납니다.

array_unshift()와 true를 반환하는 sort()도 마찬가지입니다. 배열을 직접 바꾸는 함수는 배열이 아니라 상태를 돌려줍니다.

자주 묻는 질문

PHP에서 array_push와 $arr[]의 차이는 무엇인가요?

둘 다 끝에 추가합니다. $arr[] = $x;는 함수 호출 없이 값 하나를 추가하므로 일반적으로 쓰이며 조금 더 빠릅니다. array_push($arr, $a, $b, $c)는 여러 값을 한 번에 추가할 때 편리하고 새 요소 개수를 반환합니다.

PHP에서 배열에 키와 값을 추가하려면 어떻게 하나요?

키에 대입하세요: $arr['color'] = 'blue';. array_push()는 항상 다음 정수 키를 쓰므로 이 일을 할 수 없습니다. 여러 쌍을 한 번에 추가하려면 $arr += ['a' => 1, 'b' => 2];나 array_merge()를 쓰세요.

PHP에서 배열의 맨 앞에 요소를 추가하려면 어떻게 하나요?

array_unshift($arr, $value)를 쓰세요. 정수 키를 다시 매겨 새 값이 인덱스 0을 갖게 하며, 문자열 키는 그대로 유지됩니다.

array_push 후에 배열이 숫자가 되는 이유는 무엇인가요?

array_push()가 배열이 아니라 새 요소 개수를 반환하기 때문입니다. $arr = array_push($arr, 'x');라고 쓰면 배열이 그 숫자로 바뀝니다. 한 줄에 단독으로 호출하세요: array_push($arr, 'x');.

Coddy 프로그래밍 언어 일러스트

Coddy로 코딩 배우기

시작하기