Comment insérer un élément au début d'un tableau en PHP?

167

Je sais comment l'insérer jusqu'au bout en:

$arr[] = $item;

Mais comment l'insérer au début?

la toile
la source
2
$arr[-1] = $item;Trouvé ici: stackoverflow.com/a/15252657/669677
4
@ 2astalavista, ça ne marche pas: print_r($arr)=>Array ( [0] => a, [1] => b, [-1] => c )
laurent
@ returnthis.lau_ ce cas, vous devriez utiliser for loop - à partir de -1 - pour le faire fonctionner: for ($i = -1; $i < count($a)-1; $i++)comme le lien référencé l'a montré, mais c'est facile à oublier, donc je ne préfère plus cette solution.

Réponses:

267

Utilisez array_unshift ($ array, $ item);

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

te donnera

Array
(
 [0] => item1
 [1] => item2
 [2] => item3
 [3] => item4
)
Trav L
la source
7
Et si vous avez besoin de clés littérales plutôt que numériques?
Evan
4
@Evan, la documentation pour array_unshiftdit ce qui suitAll numerical array keys will be modified to start counting from zero while literal keys won't be touched.
craned
1
Il y a deux problèmes: 1) la réindexation du tableau 2) ne peut pas ajouter un élément avec un index.
Nabi KAZ
2
Si vous avez un tableau associatif ou avez besoin de conserver les clés, consultez les exemples utilisateur ici: php.net/manual/en/function.array-unshift.php, il y a quelques bons exemples pour y parvenir!
Vallier
112

Dans le cas d'un tableau associatif ou d'un tableau numéroté où vous ne souhaitez pas modifier les clés du tableau:

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

$arr = $firstItem + $arr;

array_merge ne fonctionne pas car il réindexe toujours le tableau.

tihe
la source
6
C'est en effet la meilleure réponse!
Ankit
5
Attention! "L'opérateur + renvoie le tableau de droite ajouté au tableau de gauche; pour les clés qui existent dans les deux tableaux, les éléments du tableau de gauche seront utilisés et les éléments correspondants du tableau de droite seront ignoré. " - Voir: stackoverflow.com/a/2140094/3411766
cottton
La solution est bonne car elle peut ajouter un élément avec un index et ne pas réindexer le tableau; Mais ayez juste une note sur supprimer l'élément dans le tableau de droite, s'il y a le même index dans le tableau de gauche.
Nabi KAZ
6

Insérer un élément au début d'un tableau associatif avec une chaîne / clé d'index personnalisée

<?php

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

$array = array_reverse($array);

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

$array = array_reverse($array);

RÉSULTAT

[
  'newKey' => 'newValue',
  'keyOne' => 'valueOne',
  'keyTwo' => 'valueTwo'
]
Manish Dhruw
la source
4

Utilisez array_unshift () pour insérer le premier élément dans un tableau.

L'utilisateur array_shift () supprime le premier élément d'un tableau.

Vinit Kadkol
la source
4

Ou vous pouvez utiliser un tableau temporaire puis supprimer le vrai si vous voulez le changer pendant le cycle:

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

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

la sortie sera:

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

et lorsque vous le faites pendant le cycle, vous devez nettoyer $temp_arrayaprès avoir ajouté l'élément au tableau.

Arnas Pečelis
la source
1

Avec index personnalisé:

$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
la source
1
un tableau ne peut pas être concaténé comme ceci
Battle Hawk
Il voulait probablement utiliser plus (+) au lieu de virgule (.)
Erdinç Çorbacı
1

Pour un tableau associatif, vous pouvez simplement utiliser la fusion.

$arr = array('item2', 'item3', 'item4');
$arr = array_merge(array('item1'), $arr)
pictoru
la source