Bagaimana cara memasukkan item di awal array di PHP?

167

Saya tahu cara memasukkannya sampai akhir dengan:

$arr[] = $item;

Tapi bagaimana cara memasukkannya ke awal?

web
sumber
2
$arr[-1] = $item;Ditemukan di sini: stackoverflow.com/a/15252657/669677
4
@ 2astalavista, itu tidak berhasil: print_r($arr)=>Array ( [0] => a, [1] => b, [-1] => c )
laurent
@ returnthis.lau_ hal ini Anda harus menggunakan untuk loop - mulai dari -1 - untuk membuatnya bekerja: for ($i = -1; $i < count($a)-1; $i++)seperti yang ditunjukkan oleh tautan yang direferensikan, tetapi mudah untuk dilupakan, jadi saya tidak suka solusi itu lagi.

Jawaban:

267

Gunakan array_unshift ($ array, $ item);

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

akan memberimu

Array
(
 [0] => item1
 [1] => item2
 [2] => item3
 [3] => item4
)
Trav L
sumber
7
Bagaimana jika Anda membutuhkan kunci literal, bukan numerik?
Evan
4
@ Evan, dokumentasi untuk array_unshiftmengatakan yang berikutAll numerical array keys will be modified to start counting from zero while literal keys won't be touched.
derek
1
Ada dua masalah: 1) mengindeks ulang array 2) tidak dapat menambahkan item dengan indeks.
Nabi KAZ
2
Jika Anda memiliki susunan asosiatif atau perlu menyimpan kunci, lihat contoh pengguna di sini: php.net/manual/en/function.array-unshift.php ada beberapa contoh yang baik tentang bagaimana menyelesaikan ini!
Vallier
112

Dalam hal array asosiatif atau array bernomor di mana Anda tidak ingin mengubah kunci array:

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

$arr = $firstItem + $arr;

array_merge tidak berfungsi karena selalu mengindeks ulang array.

tihe
sumber
6
Ini memang Jawaban Terbaik!
Ankit
5
Perhatian! "Operator + mengembalikan array kanan yang ditambahkan ke array kiri; untuk kunci yang ada di kedua array, elemen dari array kiri akan digunakan, dan elemen yang cocok dari array kanan akan menjadi diabaikan. " - Lihat: stackoverflow.com/a/2140094/3411766
cottton
Solusinya bagus karena dapat menambahkan item dengan indeks, dan tidak mengindeks ulang array; Tetapi baru saja mencatat tentang menghapus item di array sebelah kanan, jika ada indeks yang sama di array sebelah kiri.
Nabi KAZ
6

Masukkan item di awal array asosiatif dengan string / kunci indeks kustom

<?php

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

$array = array_reverse($array);

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

$array = array_reverse($array);

HASIL

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

Ini akan membantu

http://www.w3schools.com/php/func_array_unshift.asp

array_unshift();
DarthVader
sumber
2
^ OBE: "W3Schools sebagian besar telah menyelesaikan masalah ini dan mengatasi sebagian besar masalah yang dialami oleh para pengembang yang bertanda tangan di bawah ini." ~ W3Fools.com
Andrew Kozak
4

Gunakan array_unshift () untuk menyisipkan elemen pertama dalam array.

User array_shift () untuk menghapus elemen pertama dari array.

Vinit Kadkol
sumber
4

Atau Anda dapat menggunakan array sementara dan kemudian menghapus yang asli jika Anda ingin mengubahnya saat siklus:

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

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

hasilnya adalah:

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

dan ketika melakukannya saat siklus, Anda harus membersihkan $temp_arraysetelah menambahkan item ke array.

Arnas Pečelis
sumber
1

Dengan indeks khusus:

$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
sumber
1
sebuah array tidak dapat digabungkan seperti ini
Battle Hawk
Mungkin dia bermaksud menggunakan plus (+) bukan koma (.)
Erdinç Çorbacı
1

Untuk array asosiatif Anda bisa menggunakan penggabungan.

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