PHP에서 배열의 시작 부분에 항목을 삽입하는 방법은 무엇입니까?


167

나는 그것을 끝까지 삽입하는 방법을 알고있다 :

$arr[] = $item;

그러나 처음에 어떻게 삽입합니까?


2
$arr[-1] = $item;여기

4
@ 2astalavista, 작동하지 않습니다 : print_r($arr)=>Array ( [0] => a, [1] => b, [-1] => c )
laurent

@ returnthis.lau_이 경우 -1부터 시작하여 루프를 사용해야 작동합니다. for ($i = -1; $i < count($a)-1; $i++)참조 링크가 표시 한 것처럼 잊어 버릴 수 있으므로 더 이상 해당 솔루션을 선호하지 않습니다.

답변:


267

array_unshift ($ array, $ item);을 사용하십시오 .

$arr = array('item2', 'item3', 'item4');
array_unshift($arr , 'item1');
print_r($arr);

너에게 줄거야

Array
(
 [0] => item1
 [1] => item2
 [2] => item3
 [3] => item4
)

7
숫자 키가 아닌 리터럴 키가 필요한 경우는 어떻습니까?
Evan

4
@Evan에 대한 문서 array_unshift는 다음과 같이 말합니다All numerical array keys will be modified to start counting from zero while literal keys won't be touched.
크레인

1
두 가지 문제가 있습니다. 1) 배열 재 인덱싱 2) 인덱스가있는 항목을 추가 할 수 없습니다.
Nabi KAZ

2
연관 배열이 있거나 키를 보존 해야하는 경우 여기에서 사용자 예제를 참조하십시오 : php.net/manual/en/function.array-unshift.php 이것을 달성하는 방법에 대한 몇 가지 좋은 예가 있습니다!
Vallier

112

배열 키를 변경하지 않으려는 연관 배열 또는 번호 배열의 경우 :

$firstItem = array('foo' => 'bar');

$arr = $firstItem + $arr;

array_merge 항상 배열을 다시 색인화하므로 작동하지 않습니다.


6
이것은 실제로 최고의 답변입니다!
Ankit

5
주의! "+ 연산자는 왼쪽 배열에 추가 된 오른쪽 배열을 반환합니다. 두 배열에 모두 존재하는 키의 경우 왼쪽 배열의 요소가 사용되고 오른쪽 배열의 일치하는 요소는 무시했습니다. " -참조 : stackoverflow.com/a/2140094/3411766
cottton

솔루션 인덱스가있는 항목을 추가 할 수 있고 배열을 다시 인덱싱하지 않았기 때문에 좋습니다. 그러나 왼쪽 배열에 동일한 인덱스가있는 경우 오른쪽 배열에서 항목 제거에 대한 참고 사항이 있습니다.
Nabi KAZ


6

문자열 / 맞춤 색인 키를 사용하여 연관 배열의 시작 부분에 항목 삽입

<?php

$array = ['keyOne'=>'valueOne', 'keyTwo'=>'valueTwo'];

$array = array_reverse($array);

$array['newKey'] = 'newValue';

$array = array_reverse($array);

결과

[
  'newKey' => 'newValue',
  'keyOne' => 'valueOne',
  'keyTwo' => 'valueTwo'
]


4

array_unshift () 를 사용 하여 배열의 첫 번째 요소를 삽입하십시오.

배열의 첫 번째 요소를 제거하는 사용자 array_shift () .


4

또는 임시 배열을 사용한 다음 사이클 중에 변경하려는 경우 실제 배열을 삭제할 수 있습니다.

$array = array(0 => 'a', 1 => 'b', 2 => 'c');
$temp_array = $array[1];

unset($array[1]);
array_unshift($array , $temp_array);

출력은 다음과 같습니다.

array(0 => 'b', 1 => 'a', 2 => 'c')

사이클 중에 수행 할 때 $temp_array항목을 배열에 추가 한 후 청소해야합니다 .


1

맞춤 색인 사용 :

$arr=array("a"=>"one", "b"=>"two");
    $arr=array("c"=>"three", "d"=>"four").$arr;

    print_r($arr);
    -------------------
    output:
    ----------------
    Array
    (
    [c]=["three"]
    [d]=["four"]
    [a]=["two"]
    [b]=["one"]
    )

1
이런 식으로 배열을 연결할 수 없습니다
Battle Hawk

아마 그는 쉼표 (.) 대신 더하기 (+)를 사용하려고했습니다.
Erdinç Çorbacı

1

연관 배열의 경우 병합을 사용할 수 있습니다.

$arr = array('item2', 'item3', 'item4');
$arr = array_merge(array('item1'), $arr)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.