Bagaimana saya bisa mengubah nilai elemen dalam array di php?

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

<?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;
    }
 
    $score = $students_score[$oldName]; //Get the score.
    $students_score[$newName] = $score; //New key with the score.
    unset($students_score[$oldName]);
    arsort($students_score);
    return $students_score;
}
 
$students_score = changeName($students_score, 'Jamie', 'James');
 
/*
Array
(
    [Alison] => 10
    [Liam] => 9
    [Jenny] => 8
    [James] => 7
    [Ron] => 6
)
*/
?>

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.

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 saya bisa mengubah nilai elemen dalam array di php?
Cara Menggunakan array_chunk dengan foreach loop dengan Contoh Kode PHP
Bagaimana saya bisa mengubah nilai elemen dalam array di php?
Cara menambahkan nilai ke array pada indeks tertentu
Bagaimana saya bisa mengubah nilai elemen dalam array di php?
Apa itu asosiatif
Bagaimana saya bisa mengubah nilai elemen dalam array di php?
How to count values in multidimensional array PHP Code Examples


  • ← 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

Bagaimana saya bisa mengubah nilai elemen dalam array di php?

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

Bagaimana Anda mengubah nilai dalam array?

Jika Anda telah memasukkan rumus array sel tunggal, pilih sel, tekan F2, lakukan perubahan, lalu tekan Ctrl+Shift+Enter..

Bisakah Anda mengubah elemen dalam array?

Metode splice() mengubah isi array dengan menghapus atau mengganti elemen yang ada dan/atau menambahkan elemen baru di tempatnya .