PHP'de bir dizinin başına bir öğe nasıl eklenir?


167

Nasıl sonuna kadar eklemek biliyorum:

$arr[] = $item;

Ama başlangıca nasıl eklenir?


2
$arr[-1] = $item;Burada bulundu: stackoverflow.com/a/15252657/669677

4
@ 2astalavista, bu çalışmıyor: print_r($arr)=>Array ( [0] => a, [1] => b, [-1] => c )
laurent

@ returnthis.lau_ Bu durumda döngü için -1'den başlayarak kullanmanız gerekir: for ($i = -1; $i < count($a)-1; $i++)referans verilen bağın gösterdiği gibi, unutmak kolaydır, bu yüzden artık bu çözümü tercih etmiyorum.

Yanıtlar:


267

Kullanım array_unshift ($ dizi $ öğesi);

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

sana vereceğim

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

7
Sayısal yerine anahtarlara ihtiyacınız varsa ne olacak?
Evan

4
@Evan, belgelerine array_unshiftdiyor şuAll numerical array keys will be modified to start counting from zero while literal keys won't be touched.
craned

1
İki sorun vardır: 1) dizinin yeniden endekslenmesi 2) bir indeks ile öğe eklenemez.
Nabi KAZ

2
İlişkilendirilebilir bir diziniz varsa veya anahtarları korumanız gerekiyorsa, buradaki kullanıcı örneklerine bakın: php.net/manual/en/function.array-unshift.php Bunu nasıl yapacağınıza dair birkaç iyi örnek var!
Vallier

112

Dizi anahtarlarını değiştirmek istemediğiniz ilişkilendirilebilir bir dizi veya numaralı dizi durumunda:

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

$arr = $firstItem + $arr;

array_merge diziyi her zaman yeniden dizine eklediğinden çalışmaz.


6
Bu gerçekten en iyi cevap!
Ankit

5
Dikkat! "+ İşleci, sol diziye eklenmiş sağ diziyi döndürür; her iki dizide de bulunan tuşlar için, sol dizideki öğeler kullanılır ve sağ dizideki eşleşen öğeler görmezden geldi." - Bkz: stackoverflow.com/a/2140094/3411766
cottton

Çözüm iyidir, çünkü bir indeks ile öğe ekleyebilir ve diziyi yeniden endekslemez; Ancak, sol dizide aynı dizin varsa, sağ el dizisindeki öğeyi kaldır hakkında bir not alın.
Nabi KAZ


6

Dize / özel dizin anahtarıyla ilişkilendirilebilir dizinin başına bir öğe ekleme

<?php

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

$array = array_reverse($array);

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

$array = array_reverse($array);

SONUÇ

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


4

Bir diziye ilk elemanı eklemek için array_unshift () kullanın .

Bir dizinin ilk öğesini kaldırmak için array_shift () kullanıcısı .


4

Veya geçici diziyi kullanabilir ve döngü sırasında değiştirmek isterseniz gerçek diziyi silebilirsiniz:

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

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

çıktı:

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

ve döngü sırasında yaparken, $temp_arrayöğeyi diziye ekledikten sonra temizlemelisiniz .


1

Özel dizinle:

$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
bir dizi bu şekilde birleştirilemez
Battle Hawk

Muhtemelen virgül (.)
Yerine

1

İlişkilendirilebilir bir dizi için yalnızca birleştirme kullanabilirsiniz.

$arr = array('item2', 'item3', 'item4');
$arr = array_merge(array('item1'), $arr)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.