Jika Anda mengubah nilainya, Anda tidak memengaruhi nilai dalam larik asli. Kode contoh berikut menggambarkan hal ini
Kode di atas menghasilkan hasil berikut
Meskipun $val diubah dari "CSS" menjadi "Javascript" di dalam loop, larik $authors asli tetap tidak tersentuh
Bagaimana
Untuk memodifikasi nilai array, kita perlu mendapatkan foreach() untuk mengembalikan referensi ke nilai dalam array, bukan salinan
Sintaksis
Untuk bekerja dengan referensi ke elemen array, tambahkan simbol &(ampersand) sebelum nama variabel di dalam pernyataan foreach
foreach ( $array as & $value ) {_Contoh
Inilah contoh sebelumnya yang ditulis ulang untuk menggunakan referensi
Kode di atas menghasilkan hasil berikut
Kali ini, nilai elemen ketiga dalam larik $authors diubah dari "CSS" menjadi "Javascript" dalam larik itu sendiri
Catatan
unset($val) memastikan bahwa variabel $val dihapus setelah perulangan selesai
Saat loop selesai, $val masih menyimpan referensi ke elemen terakhir. Mengubah $val nanti dalam kode kita akan mengubah elemen terakhir dari array $authors. Dengan menghapus $val, kami menghindari potensi bug
Artikel ini berfokus pada cara memperbarui nilai kunci dalam array PHP. Meskipun artikel tersebut mencakup tiga pendekatan, pendekatan kedua adalah yang paling efisien
Perkenalan
Array asosiatif PHP pada dasarnya adalah peta hash karena menyertakan pasangan kunci dan nilai. Kuncinya unik tetapi bisa berubah. Dengan demikian, kami dapat memperbarui nilai kunci dalam array PHP, dan itulah yang akan menjadi fokus artikel ini. Mari kita mulai
#1 – Perbarui nilai kunci dalam array PHP menggunakan loop
Pendekatan yang paling jelas adalah menggunakan loop. PHP foreach loop nyaman karena memberi kita akses mudah ke pasangan kunci dan nilai. Contoh berikut akan menggunakan foreach loop untuk mengubah nilai kunci dalam array PHP
<?php $students_score = [ "Alison" => 10, "Liam" => 9, "Jenny" => 8, "Jamie" => 7, "Ron" => 6 ]; function changeName($students_score, $oldName, $newName) { foreach($students_score as $student=>$score) { if($student == $oldName) { $students_score[$newName] = $score; // Only the keys are meant to be replaced. unset($students_score[$student]); // Removes the old key and value. } } arsort($students_score); return $students_score; } $students_score = changeName($students_score, 'Jamie', 'James'); /* Array ( [Alison] => 10 [Liam] => 9 [Jenny] => 8 [James] => 7 [Ron] => 6 ) */ ?>Perincian changeName() dalam contoh adalah sebagai berikut
- Itu berputar melalui array dan menemukan kunci yang sama dengan nama yang akan diganti
- Setelah menemukan kunci itu, ia menetapkan skor terkait ke kunci baru
- Ini kemudian menghapus kunci dan nilai lama karena array memiliki entri yang diperbarui
- Terakhir, ini mengurutkan array dalam urutan menurun menggunakan fungsi arsort
Elemen array ditempatkan berdasarkan urutan penyisipannya. Itu sebabnya menggunakan arsort PHP membantu dalam mengatur ulang skor. Output dalam contoh menegaskannya.
#2 – Perbarui nilai kunci dalam array PHP menggunakan array_key_exists
Menggunakan perulangan foreach adalah mubazir karena array menampilkan pengindeksan langsung yang berarti bahwa array mengembalikan nilai untuk kunci yang diberikan. Jadi, mari kita potong bagian loop dan turunkan kerumitannya lebih jauh
Contoh berikut menggunakan array_key_exists PHP untuk melihat apakah kuncinya ada di awal. Jika tidak, cukup kembalikan array yang tidak dimodifikasi
Inilah cara fungsi mengubah nilai kunci dalam array PHP
- Ini mengembalikan array apa adanya, jika kunci yang akan diganti tidak ada
- Jika tidak, itu mendapat skor dengan kunci – Pengindeksan Langsung
- Ini menetapkan kunci baru dalam larik dan memberinya skor
- Ini menghapus kunci dan nilai lama
- Terakhir, ini mengurutkan array dalam urutan menurun menggunakan fungsi arsort
Dibandingkan dengan pendekatan loop, pendekatan ini jelas lebih efisien dalam hal kompleksitas karena tidak perlu melintasi seluruh array.
#3 – Perbarui nilai kunci dalam array PHP menggunakan array_search
Meskipun pendekatan ini tidak lebih efisien daripada yang kedua, kami akan tetap mencobanya. Mari lompat ke contoh, dan kami akan menjelaskan semuanya dalam perincian yang mengikutinya
<?php $students_score = [ "Alison" => 10, "Liam" => 9, "Jenny" => 8, "Jamie" => 7, "Ron" => 6 ]; function changeName($students_score, $oldName, $newName) { if(!array_key_exists($oldName, $students_score)) { return $students_score; } $names = array_keys($students_score); $names[array_search($oldName, $names)] = $newName; return array_combine($names, $students_score); } $students_score = changeName($students_score, 'Jamie', 'James'); /* Array ( [Alison] => 10 [Liam] => 9 [Jenny] => 8 [James] => 7 [Ron] => 6 ) */ ?> _Berikut uraian dari contoh ini
- Fungsi menggunakan centang array_key_exists seperti yang sudah terlihat
- Ini menggunakan PHP array_keys untuk mendapatkan array kunci saja
- Itu kemudian mencari melalui array kunci menggunakan array_search untuk menemukan kunci yang akan diganti
- Setelah ditemukan, kuncinya diganti dengan yang lebih baru
- Akhirnya menggunakan array_combine, ini menggabungkan array kunci yang diperbarui dengan nilai dari array input
Untungnya, kita tidak perlu menggunakan fungsi pengurutan di sini karena urutannya tidak berubah. Namun, pendekatan ini memiliki overhead beberapa panggilan fungsi. Jadi, mungkin tidak ideal untuk mengubah nilai kunci dalam array PHP
Kesimpulan
Artikel ini berfokus pada cara memperbarui nilai kunci dalam array PHP. Dimulai dengan pendekatan foreach loop, artikel beralih ke pendekatan pengindeksan langsung yang lebih efisien. Terakhir, artikel ini menggunakan beberapa fungsi PHP populer untuk mengubah nilai kunci dalam sebuah array. Pendekatan pengindeksan langsung adalah yang paling efisien
Semoga Anda menyukai artikel ini. Pelajari lebih lanjut tentang PHP di FuelingPHP.
Ingin mempelajari lebih lanjut tentang PHP?
Kami memiliki banyak artikel menarik yang berhubungan dengan PHP. Anda dapat menjelajahi ini untuk mempelajari lebih lanjut tentang PHP
- Cara mendorong item ke indeks pertama array PHP
- Intro ke Symfony Doctrine PHP ArrayCollection
- Cara membagi array multidimensi di PHP
Pos terkait
- ← Bagaimana Anda mendorong banyak item ke array PHP
- Cara mendorong item ke indeks pertama array PHP →
Tulis Kode Lebih Baik Lebih Cepat
Klik di sini untuk mendapatkan rahasia teratas 'Menjadi Rockstar PHP Dev dalam 7 Hari' kami dikirimkan ke kotak masuk Anda
mendaftar
Keajaiban Stefanus
Hai. Saya harap Anda menikmati artikel ini. Saya telah mengembangkan situs web dan perangkat lunak secara profesional selama lebih dari 20 tahun. Saya memulai FuelingPHP sebagai cara untuk memberikan kembali kepada komunitas sumber terbuka yang membantu saya dapat hidup dengan nyaman membangun hal-hal yang saya sukai