array_push($arr, $value) menambahkan sebuah nilai ke akhir array. Untuk satu nilai, singkatan $arr[] = $value; melakukan hal yang sama tanpa memanggil fungsi, dan cara inilah yang dipakai sebagian besar kode PHP. Keduanya mengubah array secara langsung.
array_push() menerima array lewat referensi, jadi fungsi ini mengubah variabel yang kamu berikan. Nilai kembaliannya adalah jumlah elemen yang baru, dan boleh kamu abaikan.
array_push vs $arr[] =
Pakai $arr[] = $value untuk satu nilai: lebih pendek dan tidak memanggil fungsi, yang terasa bedanya di dalam loop besar. Pakai array_push() saat kamu punya beberapa nilai untuk ditambahkan dalam satu pernyataan, atau sebuah daftar nilai yang ingin di-spread.
$arr[] = juga bekerja pada variabel yang belum ada: PHP akan membuat array-nya. array_push() butuh array yang sudah ada: pada variabel yang belum didefinisikan, fungsi ini melempar TypeError: array_push(): Argument #1 ($array) must be of type array, null given.
Menambah key dan nilai
array_push() hanya menambahkan nilai dengan key integer berikutnya. Untuk menambah key bernama, isi langsung ke key itu. Untuk menambah beberapa pasangan sekaligus, pakai += (mempertahankan key yang sudah ada) atau array_merge() (nilai baru yang menang).
Perbedaan antara + dan array_merge() saat key-nya bentrok dibahas di halaman array_merge.
Menambah di awal: array_unshift
array_unshift($arr, $value) menyisipkan nilai di awal. Key integer dinomori ulang sehingga nilai baru mendapat indeks 0; key string tetap seperti semula. Sama seperti array_push(), fungsi ini menerima beberapa nilai dan mengembalikan jumlah elemen yang baru.
Untuk menaruh pasangan bernama di urutan pertama, buat array baru: $menu = ['login' => '/login'] + $menu;.
Menyisipkan di posisi tertentu
array_splice($arr, $offset, 0, $values) menyisipkan tanpa menghapus apa pun: fungsi ini mulai di $offset, menghapus 0 elemen, lalu menaruh nilai baru di sana. Key integer setelah titik sisip dinomori ulang.
array_splice() juga bisa menghapus dan mengganti elemen; halaman tentang menghapus elemen menunjukkan bentuk-bentuk itu.
Menambahkan array lain
array_push($a, $b) menambahkan $b sebagai satu elemen bersarang, yang jarang sesuai keinginanmu. Untuk menambahkan nilai-nilai $b satu per satu, spread nilainya, atau buat array baru dengan sintaks spread atau array_merge().
Kesalahan umum: menyimpan nilai kembalian
array_push() mengembalikan angka, yaitu jumlah elemen yang baru. Menyimpan angka itu kembali ke variabel array mengganti array-mu dengan integer, dan array_push() berikutnya pada variabel itu akan melempar TypeError.
Hal yang sama berlaku untuk array_unshift() dan untuk sort(), yang mengembalikan true. Fungsi yang mengubah array secara langsung mengembalikan status, bukan array-nya.
Pertanyaan yang sering diajukan
Apa bedanya array_push dan $arr[] di PHP?
Keduanya menambahkan ke akhir array. $arr[] = $x; menambahkan satu nilai tanpa memanggil fungsi, jadi cara ini yang biasa dipakai dan sedikit lebih cepat. array_push($arr, $a, $b, $c) berguna saat kamu menambahkan beberapa nilai sekaligus, dan fungsi ini mengembalikan jumlah elemen yang baru.
Bagaimana cara menambah key dan nilai ke array di PHP?
Isi langsung ke key-nya: $arr['color'] = 'blue';. array_push() tidak bisa melakukannya karena selalu memakai key integer berikutnya. Untuk menambah beberapa pasangan sekaligus, pakai $arr += ['a' => 1, 'b' => 2]; atau array_merge().
Bagaimana cara menambah elemen di awal array di PHP?
Pakai array_unshift($arr, $value). Fungsi ini menomori ulang key integer sehingga nilai baru mendapat indeks 0; key string tetap seperti semula.
Kenapa array saya berubah menjadi angka setelah array_push?
Karena array_push() mengembalikan jumlah elemen yang baru, bukan array-nya. Menulis $arr = array_push($arr, 'x'); mengganti array dengan angka itu. Panggil fungsinya di barisnya sendiri: array_push($arr, 'x');.