Jak wstawić element na początku tablicy w PHP?

167

Wiem jak wstawić go do końca poprzez:

$arr[] = $item;

Ale jak wstawić to na początek?

sieć
źródło
2
$arr[-1] = $item;Znaleziono tutaj: stackoverflow.com/a/15252657/669677
4
@ 2astalavista, to nie działa: print_r($arr)=>Array ( [0] => a, [1] => b, [-1] => c )
laurent
@ returnthis.lau_ w tym przypadku powinieneś użyć pętli for - zaczynając od -1 - aby to zadziałało: for ($i = -1; $i < count($a)-1; $i++)jak pokazał odnośnik, ale łatwo o tym zapomnieć, więc nie wolę już tego rozwiązania.

Odpowiedzi:

267

Użyj array_unshift ($ tablica, $ pozycja);

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

da tobie

Array
(
 [0] => item1
 [1] => item2
 [2] => item3
 [3] => item4
)
Trav L
źródło
7
A co, jeśli potrzebujesz klawiszy dosłownych, a nie numerycznych?
Evan,
4
@Evan, dokumentacja array_unshiftmówi, co następujeAll numerical array keys will be modified to start counting from zero while literal keys won't be touched.
wyciągnięto
1
Są dwa problemy: 1) ponowne zindeksowanie tablicy 2) nie można dodać elementu z indeksem.
Nabi KAZ
2
Jeśli masz tablicę asocjacyjną lub potrzebujesz zachować klucze, zobacz przykłady użytkowników tutaj: php.net/manual/en/function.array-unshift.php jest kilka dobrych przykładów, jak to osiągnąć!
Vallier
112

W przypadku tablicy asocjacyjnej lub tablicy numerowanej, w której nie chcesz zmieniać kluczy tablicy:

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

$arr = $firstItem + $arr;

array_merge nie działa, ponieważ zawsze reindeksuje tablicę.

tihe
źródło
6
To naprawdę najlepsza odpowiedź!
Ankit
5
Uwaga! Operator + zwraca tablicę po prawej stronie dołączoną do tablicy po lewej stronie; dla kluczy, które istnieją w obu tablicach, zostaną użyte elementy z tablicy po lewej stronie, a pasujące elementy z tablicy po prawej stronie będą ignorowane ”. - Zobacz: stackoverflow.com/a/2140094/3411766
Cottton
Rozwiązanie jest dobre, ponieważ można dodać element z indeksem i nie reindeksować tablicy; Ale mam tylko notatkę o usuwaniu elementu w tablicy po prawej stronie, jeśli jest taki sam indeks w tablicy po lewej stronie.
Nabi KAZ
6

Wstaw element na początku tablicy asocjacyjnej z ciągiem / niestandardowym kluczem indeksu

<?php

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

$array = array_reverse($array);

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

$array = array_reverse($array);

WYNIK

[
  'newKey' => 'newValue',
  'keyOne' => 'valueOne',
  'keyTwo' => 'valueTwo'
]
Manish Dhruw
źródło
4

Użyj funkcji array_unshift (), aby wstawić pierwszy element do tablicy.

Użytkownik array_shift () usuwa pierwszy element tablicy.

Vinit Kadkol
źródło
4

Lub możesz użyć tymczasowej tablicy, a następnie usunąć prawdziwą, jeśli chcesz ją zmienić podczas cyklu:

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

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

wynik będzie następujący:

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

a kiedy robisz to w cyklu, powinieneś wyczyścić $temp_arraypo dołączeniu elementu do tablicy.

Arnas Pečelis
źródło
1

Z indeksem niestandardowym:

$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"]
    )
Timothy Nwanwene
źródło
1
tablica nie może być konkatenowana w ten sposób
Battle Hawk
Prawdopodobnie miał zamiar użyć plus (+) zamiast przecinka (.)
Erdinç Çorbacı
1

W przypadku tablicy asocjacyjnej możesz po prostu użyć scalania.

$arr = array('item2', 'item3', 'item4');
$arr = array_merge(array('item1'), $arr)
pictoru
źródło