Mengirim dengan Referensi
Termasuk bagian Logika dan Alur dalam perjalanan PHP di Coddy. Pelajaran 7 dari 68.
Secara default, saat kamu meneruskan variabel ke fungsi di PHP, fungsi menerima salinan nilai variabel tersebut. Artinya, perubahan apa pun yang dibuat di dalam fungsi tidak memengaruhi variabel asli di luar fungsi.
Namun, terkadang kamu ingin fungsi mengubah variabel asli secara langsung. Di sinilah cara meneruskan dengan referensi digunakan. Dengan menambahkan ampersand (&) sebelum nama parameter dalam definisi fungsi, kamu memberi tahu PHP untuk meneruskan variabel yang sebenarnya, bukan salinannya:
<?php
function doubleValue(&$number) {
$number = $number * 2;
}
$value = 10;
doubleValue($value);
echo $value; // Output: 20
?>Perhatikan bahwa $value berubah dari 10 menjadi 20 meskipun kita tidak mengembalikan apa pun dari fungsi. Parameter &$number membuat tautan langsung ke variabel $value yang asli, sehingga fungsi dapat mengubahnya secara langsung.
Teknik ini sangat berguna saat kamu perlu membuat fungsi mengubah beberapa variabel atau saat bekerja dengan struktur data besar yang tidak efisien jika disalin.
Tantangan
MudahBuat fungsi bernama updateInventory yang menerima tiga parameter: referensi ke variabel jumlah, jumlah yang akan ditambahkan, dan jumlah yang akan dikurangi. Fungsi tersebut harus mengubah jumlah awal dengan menambahkan jumlah pertama dan mengurangi jumlah kedua.
Kamu akan menerima tiga input: jumlah awal, jumlah yang akan ditambahkan, dan jumlah yang akan dikurangi. Baca ketiga input tersebut, buat variabel dengan jumlah awal, panggil fungsi updateInventory dengan meneruskan jumlah melalui referensi beserta jumlah yang akan ditambahkan dan dikurangi, lalu cetak jumlah yang telah diperbarui.
Format input: Tiga baris. Baris pertama berisi jumlah awal (angka), baris kedua berisi jumlah yang akan ditambahkan (angka), baris ketiga berisi jumlah yang akan dikurangi (angka)
Output yang diharapkan: Jumlah yang telah diperbarui setelah penambahan dan pengurangan
Coba sendiri
<?php
// Baca input
$initialQuantity = intval(fgets(STDIN));
$amountToAdd = intval(fgets(STDIN));
$amountToRemove = intval(fgets(STDIN));
// Buat variabel quantity
$quantity = $initialQuantity;
// TODO: Buat fungsi updateInventory di sini yang menerima parameter referensi
// TODO: Panggil fungsi updateInventory dengan meneruskan quantity sebagai referensi
// Tampilkan quantity yang telah diperbarui sebagai output
echo $quantity;
?>Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Logika dan Alur
1Fungsi Lanjutan
Fungsi AnonimClosure dan 'use'Fungsi PanahFungsi CallbackMenggunakan 'call_user_func'Fungsi VariabelMengirim dengan ReferensiFungsi RekursifUlasan: Ragam Fungsi4Array Multidimensi
Membuat array 2DMengakses Elemen array 2DMengubah Elemen array 2DMelakukan Perulangan dengan loop Bersarangarray Asosiatif 2DRekap: Latihan Kisi Sederhana2Manipulasi array Lanjutan
Menambahkan dengan 'array_push'Menghapus dengan 'array_pop'Menambahkan dengan 'array_unshift'Menghapus dengan 'array_shift'Menggabungkan array berindeksMenggabungkan array asosiatifMengambil bagian dengan 'array_slice'Nilai dengan 'in_array'Kunci dengan 'array_search'Rekap: Latihan playlist3Mengurutkan array
Urutkan array berindeks secara menaikUrutkan array berindeks secara menurunUrutkan assoc array berdasarkan nilaiUrutkan assoc array berdasarkan kunciPengurutan urutan alamiPengurutan khusus dengan 'usort'Rangkuman: Pengurutan papan peringkatLatihan sendiri: Compiler PHP online