PHP 배열, 자바스크립트의 push 같은 건 없나?

다 적고 나니 아즈키 님이 array_push()라는 함수가 있다고 알려 주셨다. 찾아보니 있다. 이럴 수가!e

내용에 보니 엘리먼트 하나만 넣을 때는 $array[] = 1; 방식을 사용하는 게 낫다고 한다. 함수 호출로 인한 오버헤드(대충 부하/부담 정도로 생각하면 되겠다. 구글 사전은 오버해드 타임을 ‘【컴퓨터】 오버헤드 타임 《operating system의 제어 프로그램이 컴퓨터를 사용하는 시간》’이라고 해설했다. 그러면 좀 이해가 갈 것 같다.)가 없기 때문이란다.(아마도 맞는 번역이지 싶은데 틀렸다면 지적 바란다.)

Note: If you use array_push() to add one element to the array it’s better to use $array[] = because in that way there is no overhead of calling a function.

또 다른 주의사항도 있는데 번역 안 된다. 첫 번째 요소가 배열이 아니면 경고가 뜬다는 거 같은데;;

Note: array_push() will raise a warning if the first argument is not an array. This differs from the $var[] behaviour where a new array is created.
괴발개발 번역 : array_push()는 만약 첫 번째 인자가 배열이 아니라면 경고를 띄운다. $var[]에서 새 배열이 생겼을 때 일어나는 일과 차이가 있다.(자신없는 번역;; 옳은 번역을 아는 분은 댓글을)

예제는 PHP 공식 사이트에서 긁어 왔다.

$stack = array("orange", "banana");
array_push($stack, "apple", "raspberry");
print_r($stack);
//결과는 
//Array
//(
//    [0] => orange
//    [1] => banana
//    [2] => apple
//    [3] => raspberry
//)

그 외 배열 함수

이 외에 다음 함수들도 볼 만하다.

array_pop() : 배열 요소 중 맨 뒤에 있는 놈을 튕겨 낸다. 인자로 들어간 배열에서는 그 놈이 없어지고, 그놈이 리턴돼서 튀어나온다. $a = array_pop($b)라면, $b에서는 인자가 사라지고 $a는 그 인자가 된다는 말.

array_shift() : pop과 같고, 다만 맨 앞에 있는 놈을 처리하는 것 같다.

array_unshift() : array_unshift($queue, “apple”, “raspberry”); 이렇게 쓰면 $queue 배열 0,1번으로 apple과 raspberry가 들어간다.

배열은 나에게 친숙하지 않다. 오늘 아즈키님 덕에 바쁜 시간 쪼개서 배열 공부를 할 수 있었다. ㅋ

*아래 설명도, 위에서 내가 한 번역이 맞다면 필요한 것이니 읽기 바란다.

$a[]=’배열 새 요소’ 방식

php 배열 설명을 보면 흔히 책에서는

$array = array(1,2,3,4,5)

식으로 설명해 놓는다.

추가적으로 설명하는 것은 대부분 연관배열이다. key갖는 배열이다.

$arr = array('a' => 1, 'b' => 2);

이런 거다.

위 처럼 사용하면 $arr[a]에서 1이 호출되고, $arr[b]에서 2가 호출된다.

근데 자바스크립트에서는 일단 배열을 만들고 나서 배열.push(a) 식으로 쓰면 배열이 추가된다. PHP엔 그런 게 없을까? 있다.

아래 코드를 보자.

$arr = array();
$arr[] = 1;
$arr[] = 2;
$arr[] = 3;
$arr[] = 4;
echo $arr[2];
//결과는 3

이해가 갈 것이다. 그냥 $arr[]에 넣으면 된다. 그럼 알아서 뒤쪽에 가서 붙는다.

PHP 사이트의 Arrays 설명에는 아래 예제가 나와 있다. 번역은 내가 대충 했다.

$arr = array(5 => 1, 12 => 2);

$arr[] = 56;    // 여기서 이렇게 쓰면
                //  $arr[13] = 56; 와 같은 명령이다.

$arr["x"] = 42; // 배열의 키 x에 
                // 새 요소를 추가
                
unset($arr[5]); // 배열에서 요소를 제거

unset($arr);    // 배열 전체를 제거

이 예제에선 재밌는 게 있다. 3번 줄이다. $arr[]에 넣었더니 $arr[13]에 들어갔다. 즉, $arr[5]와 $arr[12]밖에 없는 경우에도 무조건 제일 뒤에 가서 붙는다는 거다.

위 예제를 보고 위쪽 코드를 짜봤더니 잘 되서 적었다.

나는 배열을 처음부터 생성할 일이 별로 없는데, 이런 설명이 없어서 답답했다. 알게 된 김에 다른 사람들도 보면 도움될 수 있을 것 같아 적었다.

👇 카테고리 글 목록

대표글

“PHP 배열, 자바스크립트의 push 같은 건 없나?”에 대한 2개의 응답

  1. push 함수 있어요…

    php.net 에서 array_push 를 찾아보세요.

    1. 감사합니다. 덕분에 배열공부했어요. 참고해서 내용 고쳤습니다. ^^ 앞으로도 잘 부탁드려요. 공부 많이 시켜 주시는 거 같아요.

댓글 남기기