Bagaimana cara menghapus elemen dari array ketika saya tahu nama elemen? sebagai contoh:
Saya memiliki sebuah array:
$array = array('apple', 'orange', 'strawberry', 'blueberry', 'kiwi');
pengguna masuk strawberry
strawberry
dihapus.
Untuk sepenuhnya menjelaskan:
Saya memiliki database yang menyimpan daftar item yang dipisahkan oleh koma. Kode menarik dalam daftar berdasarkan pilihan pengguna di mana pilihan itu berada. Jadi, jika mereka memilih stroberi, mereka menarik kode di setiap entri jika stroberi berada kemudian mengubahnya menjadi array menggunakan split (). Saya ingin mereka menghapus item yang dipilih pengguna, untuk strawberry contoh ini, dari array.
Jawaban:
Gunakan
array_search
untuk mendapatkan kunci dan menghapusnyaunset
jika ditemukan:array_search
mengembalikan false ( null hingga PHP 4.2.0) jika tidak ada item yang ditemukan.Dan jika ada beberapa item dengan nilai yang sama, Anda dapat menggunakannya
array_keys
untuk mendapatkan kunci untuk semua item:sumber
$submenuArray
? (Perhatikan bahwa dengan setiap loop$submenuArray
akan ditimpa.)Gunakan
array_diff()
untuk 1 solusi garis:... Tidak perlu fungsi tambahan atau foreach loop.
sumber
strawberry
tidak ada dalam array awal, array akan tersedia dalam$array_without_strawberries
kode - berbahaya jika Anda ingin memastikan bahwa elemen yang diberikan tidak ada dalam array.$a = array_diff(array(), array('strawberry'));
- $ a adalah array kosong.sumber
$my_array = array_values($my_array);
.in_array
danarray_search
). Menggunakan kembalinyaarray_search
seperti dalam jawaban Gumbo lebih efektifJika Anda menggunakan array biasa di sini (yang terlihat seperti kasing), Anda harus menggunakan kode ini sebagai gantinya:
unset($array[$key])
hanya menghilangkan elemen tetapi tidak menyusun ulang susunan polos.Sepertinya kita memiliki sebuah array dan menggunakan array_splice:
Dibandingkan dengan tidak disetel:
Perhatikan bagaimana
unset($array[$key])
tidak menyusun ulang susunan.sumber
unset
tidak mengembalikan apa pun. Jadijson_encode(unset($array[2]))
tidak tepat untuk perbandingan.Anda dapat menggunakan filter array untuk menghapus item dengan kondisi tertentu pada
$v
:sumber
array_filter()
. Walaupun saya secara pribadi akan menggunakan fungsi anonim dalam implementasi saya, saya percaya tindakan yang benar pada SO adalah mengomentari atau mengedit jawaban D.Martin jika Anda ingin melakukan perbaikan mikro sehingga halaman ini tidak menjadi kembung. Hapus jawaban duplikat ini.Akan seperti ini:
sumber
Ini adalah pengulangan sederhana yang dapat menghapus beberapa nilai dalam array.
sumber
array_diff()
. Bagaimana ini bisa mendapatkan tiga upvotes. Tidak seorang pun seharusnya menemukan jawaban ini bermanfaat atau menggunakannya dalam proyek mereka sendiri. Saya sarankan menghapus jawaban ini - ini akan berfungsi untuk membebaskan akun Anda dari jawaban berkualitas rendah, mengurangi jawaban-gembung pada halaman ini, dan memberi Anda lencana disiplin. Saya akan menunda downvote saya sehingga Anda punya waktu untuk menghapus hadiah.Hanya kamu dapat melakukan satu baris. Itu akan menghapus elemen dari array
sumber
Saat ini saya menggunakan fungsi ini:
Anda dapat memasukkan array atau hanya string dengan elemen yang harus dihapus. Tulis seperti ini:
ATAU
$detils = array_delete('orange', $detils);
Itu juga akan mengindeks ulang.
sumber
Pertanyaan ini memiliki beberapa jawaban tetapi saya ingin menambahkan sesuatu lebih karena ketika saya menggunakan
unset
atauarray_diff
saya memiliki beberapa masalah untuk bermain dengan indeks array baru ketika elemen tertentu dihapus (karena indeks awal disimpan)Saya kembali ke contoh:
atau
Jika Anda mencetak hasilnya, Anda akan mendapatkan:
Hasil:
Tetapi indeks akan disimpan dan Anda akan mengakses elemen Anda seperti:
Dan array terakhir tidak diindeks ulang. Jadi, Anda perlu menambahkan setelah
unset
atauarray_diff
:Setelah itu array Anda akan memiliki indeks normal:
Terkait dengan posting ini: Re-Index Array
Semoga ini bisa membantu
sumber
Pendekatan yang lebih baik mungkin untuk menjaga nilai-nilai Anda sebagai kunci dalam array asosiatif, dan kemudian memanggilnya
array_keys()
ketika Anda ingin array aktual. Dengan begitu Anda tidak perlu menggunakanarray_search
untuk menemukan elemen Anda.sumber
Jawaban untuk array PHP dihapus dengan nilai (bukan kunci) Diberikan oleh https://stackoverflow.com/users/924109/rok-kralj
IMO adalah jawaban terbaik karena menghilangkan dan tidak bermutasi
Ini menggeneralisasi dengan baik, Anda dapat menghapus elemen sebanyak yang Anda suka pada saat yang sama, jika Anda mau.
Penafian: Perhatikan bahwa solusi saya menghasilkan salinan array yang baru sambil mempertahankan yang lama berbeda dengan jawaban yang diterima yang bermutasi. Mungkin sedikit lebih lambat karena ini.
sumber
Saya mencari jawaban untuk pertanyaan yang sama dan menemukan topik ini. Saya melihat dua cara utama: kombinasi
array_search
&unset
dan penggunaanarray_diff
. Sekilas, menurut saya metode pertama akan lebih cepat, karena tidak memerlukan penciptaan array tambahan (seperti saat menggunakanarray_diff
). Tetapi saya menulis patokan kecil dan memastikan bahwa metode kedua tidak hanya lebih ringkas, tetapi juga lebih cepat! Senang berbagi ini dengan Anda. :)https://glot.io/snippets/f6ow6biaol
sumber
Saya lebih suka menggunakan array_key_exists untuk mencari kunci dalam array seperti:
Array([0]=>'A',[1]=>'B',['key'=>'value'])
untuk menemukan yang ditentukan secara efektif, karena array_search dan in_array () tidak berfungsi di sini. Dan jangan menghapus barang dengan tidak disetel () .
Saya pikir itu akan membantu seseorang.
sumber
Buat array numerik dengan menghapus nilai Array tertentu
Anda Dapat Merujuk tautan ini ..
sumber
sumber
Menggunakan
array_seach()
, coba yang berikut ini:array_search()
mengembalikan kunci elemen yang ditemukannya, yang dapat digunakan untuk menghapus elemen itu dari array asli menggunakanunset()
. Ini akan kembaliFALSE
pada kegagalan, namun itu dapat mengembalikan nilai "falsey" pada kesuksesan (kunci Anda mungkin0
misalnya), itulah sebabnya mengapa!==
operator perbandingan ketat digunakan.The
if()
pernyataan akan memeriksa apakaharray_search()
kembali nilai, dan hanya akan melakukan tindakan jika hal itu.sumber
sumber
array_search()
-unset()
Metode itu sudah diposting oleh John Conde tahun sebelum Anda. Jawaban duplikat tidak memiliki nilai bagi pembaca dan sebenarnya merupakan ketidaknyamanan karena waktu yang terbuang saat menggulir dan membaca informasi yang berlebihan. Silakan hapus jawaban ini.sumber
sumber
sumber