Tutorial Array Pada PHP

Destructuring Array

Materi ini memiliki 1 buah lampiran. Namun Anda tidak dapat mengakses lampiran karena belum terdaftar di kursus ini. Klik disini untuk mendaftar.

Pada video ini, kita akan membahas mengenai destructuring, yaitu sintaks yang baru diperkenalkan pada PHP versi 7,1, yang bisa kita gunakan untuk menyimpan nilai di dalam array ke dalam variable.

Seperti biasa, kita bahas mulai dari konsepnya terlebih dahulu. Mengapa kita perlu menggunakan destructuring? Sebagai contoh disini kita memiliki variable $numbers yang menyimpan array dengan nilai 1, 2 dan 3. Pada saat kita hendak mengakses nilai di dalam array, maka kita harus menyebutkan nama variable $numbers diikuti oleh index-nya. Kalau kita mengakses nilai tersebut berkali-kali dalam kode kita, maka kode kita menjadi panjang karena mesti banyak menulis index dalam kurung siku. Untuk mempersingkat kodenya, biasanya kita membuat variable sementara untuk menampung nilai di dalam array.

Nah, kita bisa menggunakan destructuring untuk mempermudah kita memindahkan data di dalam array menjadi variable-variable. Sintaksnya dapat kita lihat di layar. Pertama kita buka kurung siku dahulu, dan di dalamnya kita sebutkan nama variable-variable yang menampung nilai array, misalnya disini adalah variable $first, $second dan $third. Setelah tutup kurung siku, kita berikan tanda sama dengan diikuti oleh nama variable array yaitu $numbers.

Maka yang terjadi adalah variable $first akan menyimpan nilai pertama dari array, yaitu 1. Sedangkan variable $second menyimpan nilai kedua, dan variable $third menyimpan nilai ketiga.

Kita coba praktek ya. Misalkan kita memiliki variable $numbers yang isinya adalah array dengan nilai 10, 20, dan 30. Kalau kita hendak mencetak nilai pertama di dalam array, maka kita harus menyebutkan nama variablenya yaitu $numbers, diikuti oleh tanda kurung siku dan nomor index 0. Kita jalankan, maka kita mendapatkan nilai pertama array yaitu 10.

Penulisan kode seperti ini lebih panjang karena kita harus menulis tanda kurung siku dan index. Kalau nilai ini kita gunakan secara berulang kali pada kode kita, maka biasanya kita mempersingkat kodenya dengan cara membuat variable sementara yang menampung nilai tersebut. Misalkan kita buat variable $first untuk menampung nilai dari $numbers[0]. Kemudian pada saat ingin mengakses nilai, kita tinggal gunakan variable $first. Kode menjadi lebih singkat karena kita tidak perlu menuliskan tanda kurung siku dan index.

Bagaimana kalau kita perlu mengakses nilai kedua dan ketiga? Maka kita harus copy paste kode pembuatan variable $first sebanyak 2 kali. Kemudian kita ganti misalkan nama variablenya menjadi $second untuk nilai kedua, dan $third untuk nilai ketiga. Untuk mengakses nilainya, kita tinggal menggunakan variable $second dan $third.

Sekarang perhatikan kode untuk membuat variable sementara ini. Untuk array dengan 3 nilai, kita mesti membuat kodenya sebanyak 3 baris. Kode ini bisa kita persingkat dengan menggunakan sintaks destructuring. Pertama kita komentari dahulu ketiga kodenya ya.

Untuk menggunakan destructuring, pertama kita buat dahulu tanda kurung siku. Di dalamnya kita tuliskan nama-nama variable penampung nilai array, dipisahkan dengan tanda koma. Ada 3 buah variable ya, yaitu $first, $second dan $third. Setelah tanda penutup kurung siku, kita beri operator sama dengan, diikuti oleh nama variable array yaitu $numbers. Kalau kita jalankan, maka hasilnya sama persis dengan ketiga baris yang kita komentari barusan ya. Namun sintaksnya lebih singkat.

Ada beberapa hal yang perlu kita perhatikan pada saat menggunakan destructuring ya. Yang pertama adalah, destructuring hanya meng-copy nilai dari array ke variable penampung. Array asal tetap sama. Misalkan kita tambahkan lagi var_dump($numbers). Maka kita bisa melihat bahwa array tetap sama seperti semula.

Berhubung cara kerjanya adalah meng-copy nilai, apabila kita mengubah nilai pada variable penampung, maka nilai pada array tidak berubah. Sebagai contoh, setelah kita melakukan destructuring, kita ubah nilai dari variable $second menjadi 999. Kita jalankan. Maka kita bisa melihat bahwa nilai variable $second berubah menjadi 999, namun nilai kedua dalam array masih tetap 20.

Apabila kita ingin agar perubahan nilai pada variable turut merubah nilai dalam array, maka kita bisa menggunakan reference. Caranya adalah pada sintaks destructuring, kita tambahkan simbol & sebelum nama variable $second. Kita jalankan. Sekarang nilai variable $second berubah menjadi 999 dan nilai kedua di dalam array turut berubah menjadi 999 juga. Perhatikan bahwa pada nilai kedua array ada simbol & sebelum int(999), yang menunjukkan bahwa ada variable lain yang melakukan reference ke nilai ini.

Kita hapus dahulu reference dan var_dump(numbers). Selanjutnya kita coba apa yang terjadi apabila kita melakukan destructuring menggunakan 3 variable, namun ternyata isi array-nya hanya 2. Kita hapus nilai 30 dari array ya. Kita coba jalankan. Ternyata dari PHP mengeluarkan warning bahwa index 2 pada array tidak ditemukan. Kemudian variable $third diisi dengan nilai null. Kita kembalikan nilai 30.

Pada saat kita melakukan destructuring, kita bisa skip index tertentu dari array. Misalkan kita tidak memerlukan nilai kedua, maka kita tinggal hapus variable $second. Isi dari kurung siku kita tinggal $first,,$third. Perhatikan bahwa tanda koma-nya tetap ada dua buah ya. Hal ini menandakan bahwa kita tidak mengambil nilai kedua, sehingga variable $third langsung meloncat ke nilai ketiga.

Kalau kita jalankan, maka PHP mengeluarkan warning bahwa variable $second tidak ada. Hal ini wajar ya, karena kita tidak pernah membuat variable $second. Kita komentari baris tersebut. Kita jalankan lagi. Dan sekarang yang tampil hanya nilai pertama 10 dan nilai ketiga 30.

Pada PHP, kita mengenal Associative Array, dimana kita menyimpan data di dalam array dalam bentuk pasangan key dan value. Sebagai contoh, pada kode di layar kita membuat array yang berisikan id 1, name ‘Budi’ dan class ‘2A’. Assosiative Array ini juga bisa kita gunakan untuk destructuring. Caranya sama dengan sebelumnya, namun sebelum kita menyebutkan nama variable penampung nilai, kita sebutkan dahulu key diikuti oleh tanda panah. Sebagai contoh bisa kita lihat pada kode di kanan bawah. Key ‘id’ disimpan ke dalam variable $id. Key ‘name’ disimpan ke variable $name. Dan key ‘class’ disimpan ke variable $class. Sebagai hasilnya, variable $id akan mengandung nilai 1, variable $name mengandung nilai ‘Budi’, dan variable $class mengandung nilai ‘2A’.

Biasanya programmer menggunakan nama variable yang sama dengan key. Namun aturan ini tidak wajib ya. Bisa saja ada alasan tertentu yang menyebabkan kita tidak bisa menggunakan nama yang sama, misalkan nama variablenya telah digunakan di tempat lain. Maka kita bisa mengganti nama variable menjadi nama lain.

Kita coba praktek ya. Sebagai contoh disini kita memiliki associative array dengan nilai ‘id’ 1, ‘name’ ‘Budi’, dan ‘class’ ‘2A’. Kalau kita hendak menggunakan destructuring untuk assosiative array, maka cara menulisnya menjadi seperti ini. Kita buka tanda kurung siku. Lalu kita ketik nama ‘key’ pada array, misalkan ‘id’. Diikuti oleh tanda panah. Lalu kita ketik nama variable untuk menampung nilainya, misalkan variable ‘id’. Kita pisahkan dengan tanda koma dan kita ulangi untuk kedua nilai lainnya.

Setelah tanda penutup kurung siku, kita beri tanda sama dengan dan nama array-nya yaitu $student. Kita coba var_dump nilai dari variable $id, $name dan $class. Maka kita mendapatkan nilai 1, ‘Budi’, dan ‘2A’.

Biasanya programmer menggunakan nama variable yang sama dengan key. Namun aturan ini tidak wajib. Kalau misalkan nama variable $name sudah digunakan, maka kita bisa ganti menjadi variable lain, misalkan variable $nm. Pada bagian penggunaannya, yaitu var_dump, mesti kita ganti juga namanya menjadi varialbe $nm. Kalau kita jalankan maka hasilnya sama. Kita kembalikan dulu nama variablenya menjadi $name.

Selanjutnya kita coba kalau misalkan jumlah data pada array lebih banyak dari jumlah destructuring. Misalkan kita tambahkan nilai ‘age’ => 18. Kalau dijalankan, tidak terjadi error ya. Hanya saja kita tidak punya variable yang menampung nilai umur. Kita hapus nilai age.

Kemudian kita coba lagi apa yang akan terjadi apabila nilai yang kita destructuring ternyata tidak ada di dalam array. Kita coba hapus nilai ‘name’. Maka keluar warning bahwa index ‘name’ tidak ada di dalam array. Variable $name diisi dengan nilai null.

Pada array 2 dimensi, kita bisa menggunakan Destructuring pada perintah Foreach. Sebagai contoh disini kita membuat array students yang berisikan beberapa data pelajar. Setiap pelajarnya mengandung data yang berbentuk array lagi untuk menyimpan id, nama dan kelas. Data array yang berada di dalam array seperti ini kita sebut juga dengan nama array 2 dimensi.

Pada kode sebelah kiri adalah contoh kalau kita menggunakan foreach dengan cara biasa. Sebagai hasilnya kita mendapatkan variable $student tanpa s, yang berisikan data satu orang pelajar. Namun data pelajar ini bentuknya adalah array, karena menyimpan nilai untuk id, nama dan kelas. Kalau kita hendak mengakses data nama, maka kita harus menyebutkan variable $student diikuti oleh nomor index nama yaitu 1 dalam tanda kurung siku.

Pada kode sebelah kanan adalah contoh kalau kita menggunakan foreach yang langsung diikuti oleh destructuring. Data array pelajarnya langsung kita pisahkan menjadi variable $id, $name dan $class. Jadi kalau kita hendak mengakses nilai nama, kita cukup menggunakan variable $name.

Kita lihat prakteknya ya. Misalkan disini kita memiliki array students, yang isinya adalah 3 data pelajar. Setiap data pelajarnya adalah sebuah array yang berisi ID, Nama dan Kelas. Jadinya array di dalam array, atau kita sebut juga array 2 dimensi.

Untuk melakukan iterasi di seluruh data array, kita bisa menggunakan perintah foreach($students as $student). Misalkan kita var_dump nilai dari $student. Maka kita mendapatkan hasil data pelajar yang berupa array.

Kalau kita ingin mengakses salah satu dari informasi pelajar, misalkan ingin mencetak namanya, maka kita harus menggunakan index [1].

Untuk mempermudah dalam mengakses data pelajar, kita bisa langsung melakukan destructuring pada perintah foreach. Kita ganti variable $student menjadi [$id, $name, $class]. Jadi pada saat kita hendak mengakses nama pelajar, kita bisa langsung menuliskan variable $name.

Dengan menggunakan destructuring, maka kita bisa lebih mudah dalam mengakses data. Sebagai contohnya, kita hendak menulis “$name berada di kelas $class\n”. Maka kita mendapatkan hasil seperti “Charli berada di kelas 2B”.

Perintah destructuring bisa kita gunakan untuk mempersingkat logika untuk menukar nilai yang disimpan pada dua variable. Kalau dulunya kita mesti membuat variable penampung sementara, dan menuliskan tiga baris kode seperti di layar sebelah kiri. Sekarang kita tidak perlu menggunakan variable sementara dan bisa melakukan hal yang sama hanya dengan satu baris kode seperti di sebelah kanan.

Caranya? Pertama kita buat dahulu array yang berisi nilai dari variable $a dan $b. Kemudian di sebelah kirinya kita lakukan perintah destructuring dan posisi variable $b dan $a. Jadinya variable $b akan menyimpan nilai variable $a, sedangkan variable $a akan menyimpan nilai variable $b.

2 Jam 41 Menit

Dengan menggunakan fasilitas tanya jawab, maka Anda bisa bertanya dan akan dijawab langsung oleh instruktur kursus.

Anda belum terdaftar pada kursus ini sehingga tidak bisa mengajukan pertanyaan.