Dalam tutorial belajar PHP kali ini, kita akan membahas tentang pengertian variable parameter, dan fungsi dari variabel parameter dalam PHP.
Pengertian Variable Parameter
Variable Parameter adalah sebuah fitur dalam PHP dimana kita bisa membuat fungsi dengan jumlah parameter yang bisa berubah-ubah (variable). Umumnya sebuah fungsi membutuhkan parameter yang telah ditentukan sebelumnya, namun dengan beberapa fungsi khusus, PHP membolehkan kita untuk membuat fungsi dengan jumlah parameter tidak dibatasi, bisa 0, 2, 5, bahkan 100 parameter dengan 1 nama fungsi.
Cara Pembuatan Fungsi dengan Variable Parameter
Sebuah fungsi dengan jumlah parameter yang tidak diketahui tampaknya agak aneh, namun fleksibilitas ini dapat digunakan untuk kasus-kasus pemograman khusus.
Sebagai contoh, saya akan membuat fungsi penambahan(), dimana fungsi ini akan menambahkan seluruh angka yang terdapat di dalam argumennya. Misalkan penambahan(2,6,8) akan menghasilkan 16, dan penambahan(1,2,3,4,5,6) akan menghasilkan nilai 21. Saya menginginkan fungsi ini mendukung berapapun jumlah argumen. Fungsi akan mengunakan fitur Variable Parameter.
Untuk membuat sebuah fungsi dengan jumlah parameter yang tidak diketahui, PHP menyediakan 3 fungsi tambahan untuk mengakses argumen yang diinput pada saat fungsi dipanggil. Ketiga fungsi tersebut adalah:
- func_get_args(): fungsi ini akan mengembalikan seluruh nilai argumen dalam sebuah fungsi. Hasilnya dalam bentuk array.
- func_num_args(): fungsi ini akan mengembalikan banyaknya jumlah argumen dalam pemanggilan fungsi, apakah 1 argumen, 3 argumen, atau 10 argumen.
- func_get_arg(no_urut_argumen): fungsi ini akan mengembalikan nilai dari argumen pada nomor urut yang diberikan kepadanya.
Agar mudah memahami fungsi ketiganya, langsung saja kita masuk ke dalam kode program:
<?php function penambahan() { //ambil variable parameter $array_argumen = func_get_args(); $jumlah_argumen = func_num_args(); $nilai_argumen_ke_2 = func_get_arg(1); //index dimulai dari 0 //tampilkan hasil variable parameter echo "Jumlah argumen: $jumlah_argumen"; echo "<br />"; echo "Nilai argumen ke-2: $nilai_argumen_ke_2"; echo "<br />"; echo "Array Argumen: "; var_dump($array_argumen); echo "<br />"; echo "<br />"; return; } echo "Rincian dari fungsi penambahan(1,2) : "; echo "<br />"; penambahan(1,2); echo "Rincian dari fungsi penambahan(5,4,3,2,1) : "; echo "<br />"; penambahan(5,4,3,2,1); echo "Rincian dari fungsi penambahan(0,6,8,19) : "; echo "<br />"; echo penambahan(0,6,8,19); ?>
Mari kita membahas kode PHP diatas:
Pada baris ke-2, saya mendefenisikan fungsi penambahan() tanpa menggunakan parameter. Untuk membuat fungsi variable parameter (dimana jumlah parameternya yang tidak ditentukan) dalam pendefenisian fungsi, dibuat tanpa parameter sama sekali.
Pad baris 5-7, saya menjalankan ke-3 fungsi khusus yang telah dijelaskan sebelumnya. Fungsi-fungsi ini akan mengambil nilai-nilai dari argumen yang diinputkan pada saat pemanggilan fungsi. Lalu nilai ini saya simpan kedalam 3 variabel, yakni $array_argumen, $jumlah_argumen, dan $nilai_argumen_ke_2
Sebagai catatan, untuk mengambil nilai argumen ke-2, saya dapatkan nilainya dari fungsi func_get_arg(1). Karena argumen dihitung dari angka 0, sehingga argumen kedua berada di index ke 1.
Selanjutnya dari baris 11-20 saya menampilkan hasil masing-masing variabel. Penulisan echo ”<br/>” digunakan semata-mata agar tampilan di browser lebih rapi dan mudah dilihat.
Pada saat pemanggilan fungsi penambahan() pada baris ke 26, 30 dan 34, saya memanggilnya dengan jumlah argumen yang berbeda-beda, dan anda dapat melihat hasil dari ke-3 fungsi khusus variabel parameter.
Dengan ke-3 fungsi khusus telah sukses di jalankan, untuk membuat fungsi penambahan() yang sebenarnya, saya tinggal membuat perulangan (looping) untuk menambahkan seluruh argumen-argumen yang ada. Berikut adalah kode program fungsi penambahan versi final:
<?php function penambahan() { //ambil variable parameter $jumlah_argumen = func_num_args(); //proses penambahan $nilai=0; for ($i = 0; $i < $jumlah_argumen; $i++) { $nilai += func_get_arg($i); } return $nilai; } echo "penambahan(1,2) = ".penambahan(1,2); echo "<br />"; echo "penambahan(5,4,3,2,1) = ".penambahan(5,4,3,2,1); echo "<br />"; echo "penambahan(0,6,8,19,20,44,21) = ".penambahan(0,6,8,19,20,44,21); ?>
Fungsi penambahan() diatas akan memproses tiap-tiap argumen yang diberikan kepada fungsi tersebut. Perulangan for akan memproses perulangan sebanyak argumen yang dimiliki.
numpang tanya gan
function kaya gini
function ($a, $b = 1 )
bisa di jelaskan ga, pada bagian = 1 nya, namanya apa dan fungsi nya apa ??
Itu namanya default parameter gan. Fungsinya sebagai nilai awal jika parameter tersebut tidak diisi.
Misalkan kita memiliki function kali() yang digunakan untuk membuat perkalian 2 angka. kali (2,3) akan menghasilkan nilai 6. kali (3,4) akan menghasilkan nilai 12. Seperti yang terlihat, fungsi ini membutuhkan 2 nilai inputan.
Apabila saat pembuatan fungsi kita menulisnya sebagai function kali($a, $b = 2). Maka fungsi kali() ini bisa dipanggil hanya dengan 1 inputan saja. karena jika inputan kedua tidak ditulis, PHP akan menggunakan nilai awal $b=2. Pemanggilan fungsi kali (3) akan menghasilkan nilai 6. Pemanggilan fungsi kali (5) akan menghasilkan nilai 10.
Untuk penjelasan yang lebih detail, silahkan lanjut ke Tutorial Belajar PHP: Cara Pembuatan Default Parameter pada Fungsi PHP.
Semoga bisa membantu :)
mohon izin saya copy blognya, terima kasih sungguh sangat bermanfaat sekali bagi saya yang sedang belajar
Silahkan di copy, apabila berkenan boleh cantumkan link sumbernya ke sini y.. :)
Mau nanya mas.., saya punya kasus seperti ini: saya mau bikin database utk tabungan koperasi karang taruna dengan 3 akses level user.
————————————————————————————————————————————————————
id | tanggal | nama | user_level | input_tabungan | bonus | jumlah | penarikan | saldo_akhir
————————————————————————————————————————————————————
1 |21-02-2015 |Budi Daryanto | remaja | 100.000 | 3.000 | 103.000 |………………..|……………….
2 |21-02-2015 |Rahmat Haryadi| pemuda | 200.000 | 8.000 | 208.000 |………………..|……………….
3 |21-02-2015 |Kastholani | dewasa | 300.000 | 15.000 | 315.000 |………………..|……………….
Parameter:
1. Untuk input_tabungan remaja minimal 100.000, pemuda: 200.000 dan dewasa: 300.000. Kalo ada user yang menabung dibawah nilai parameter masing-masing tersebut, maka sistem membertau bahwa “input tabungan anda tidak bisa diproses, batas tabungan anda adalah “sekian” (sesuai parameter masing2 user)”.
2. Batas minimal saldo user adalah: remaja minimal 100.000, pemuda: 200.000 dan dewasa: 300.000. jadi jika misal ada user dengan status user_level “remaja” dengan saldo misalnya 120.000, terus dia mau menarik tabungan dengan jumlah 50.000, maka sistem akan memberitau bahwa “transaksi anda tidak bisa kami proses, batas saldo anda adalah 100.000”. dan seterusnya juga utk user_level “pemuda” dan “dewasa” sesuai dengan batas saldonya masing2.
3. Value untuk “bonus” itu didapat dari:
a. untuk user_level “remaja” adalah 3% dari nilai input_tabungan.
b. untuk user_level “pemuda” adalah 4% dari nilai input_tabungan.
c. untuk user_level “dewasa” adalah 5% dari nilai input_tabungan.
4. Untuk user yang mau input_data itu saya buat form dengan 3 kolom yaitu: “id”, “nama”, “input_tabungan”, lalu klik submit”.
Dan ketika ada user yang input_tabungan, maka di kolom “user_level” akan otomatis terisi data jenis level user sesuai dengan saat user tersebut register pertama kali. terus kolom “bonus” juga otomatis akan terisi jumlah bonus sesuai dengan masing-masing parameter yang sudah ditentukan diatas. begitu pula dengan kolom “jumlah” juga akan terisi otomatis.
Pertanyaannya:
Script untuk membuat sistem seperti itu seperti apa ya mas? kalo harus pake function, cara bikinnya bagaimana mas??. maaf mas kalo pertanyaannya banyak banget, maklum masih baru pertama kali belajar.
sebelumnya terimakasih banyak mas atas bantuan dan tutorialnya.
Wah, untuk membuat sistem seperti itu lumayan rumit tuh… saya tidak menyarankan untuk pemula, karena sudah harus paham tentang HTML, PHP dan MySQL, serta cara validasi form.
Sebagai gambaran, untuk databasenya bisa dipecah menjadi 3 tabel. Tabel pertama untuk menampung biodata user, tabel kedua untuk hak akses beserta setingannya (jika tahun depan perlu mengubah bonus user dewasa menjadi 5% atau minimal saldo menjadi 500rb) dan tabel ketiga untuk menampung seluruh transaksi.
Untuk validasi bisa diset dari PHP, namun akan lebih ‘cantik’ jika pesan kesalahan juga menggunakan JavaScript. Untuk interfacenya, paling tidak agan harus menyediakan user admin yang bisa melakukan input data dan setingan sistem.
Sistem seperti ini mirip dengan Sistem Informasi Management sederhana. Jika sistem tersebut memiliki deadline, agan bisa mencari programmer web untuk membuatnya.
Mas.., saya bisa minta contactnya mas?? kalo bisa tolong email ke saya mas. anjarhanet@gmail.com
Untuk database udah jadi mas, trus untuk file “.php” juga udah jadi semua. Untuk file “.php” nya saya bikin menjadi 4 bagian, yaitu:
1. Admin yang berisi file-file untuk admin. mulai dari tampilan.php sampe file CRUD udah jadi semua.
2. Remaja yang berisi file-file untuk Remaja,.
3. File Pemuda.
4. File Dewasa.
Yang kesemuanya berisi tentang file-file yang dibutuhkan dimasing2 user_level. Bahkan untuk form Input.php, form registrasi.php serta form login.php semuanya udah jadi.
Pada dasarnya kebutuhan file untuk user Remaja, Pemuda dan Dewasa itu isinya sama mas, yang membedakan hanya parameter transaksinya doang. Kecuali untuk admin saya bikin terpisah dengan tampilan yang berbeda. Tapi kendalanya adalah:
1. Sistem gak mau jalan otomatis sesuai dengan yang sudah saya jelaskan di comment saya yang pertama kemarin.
2. Untuk hak akses login, itu masing-masing user_level ketika di klik “Login” langsung masuk ke tampilan “Remaja”. Misal saya test dengan user_level Pemuda ato Dewasa..,setelah saya klik “login” semuanya masuk ke tampilan “remaja”. padahal seharusnyakan ketika saya klik tombol “login” harusnya langsung diarahkan secara otomatis ke tampilannya masing2 sesuai hak akses loginnya.
Kira2 ada gak mas tutorial untuk itu??
wah. . . . lengkap banget mas, saya sudah sampe hatam hehehe
makasih banyak mas, di tunggu sambungannya :D
Om yang final kenapa pake loop for om??
oh ia buat ngeloop indexnya toh
Yup betul gan, untuk menjumlahkan nilainya :)
mas, mau tanya, untuk di function penambahan yg terakhir fungsi dari $array_argumen = func_get_args() buat apa lagi ya?
-termakasih
Wah, sepertinya itu 'peninggalan' contoh kode program diatasnya mas, dimana fungsi $array_argumen = func_get_args() saya gunakan untuk menampilkan seluruh argumen dengan perintah var_dump($array_argumen);
Tapi karena dalam kode terakhir saya tidak menampilkannya, jadi sebenarnya fungsi tersebut tidak berfungsi apa2.
Terimakasih koreksinya mas, saya akan hapus saja baris tersebut biar g bikin bingung :)
min apa perbedaan func_get_args() dengan huruf s dan func_get_arg() tanpa huruf s?
Sepertinya contoh diatas sudah bisa menjawab pertanyaannya mas :)
func_get_args() akan mengembalikan seluruh argumen, sedangkan func_get_arg() hanya mengembalikan 1 argumen saja.
Tenks gan sngat bermanfaat bgi sy yg newbe, duniailkom (y)
Sip, lanjut gan.. :)
ini caranya gimana gan. . . tolong di jelasin :D
Ada sebuah variabel string $s = "210923".
Rubahlah variabel diatas menggunakan program PHP, menjadi tampilan seperti dibawah:
Contoh tampilan di console:
21:09:23
Sepertinya itu untuk memecah string atau menyisipkan sesuatu ke dalam string gan. Bisa dengan mengkombinasikan dasar2 PHP dengan fungsi substr() yang digunakan untuk mengambil sebagian nilai string. Bisa cek ke https://www.duniailkom.com/tutorial-php-cara-memotong-atau-mengambil-sebagian-string-fungsi-substr/
gan bisa di follow contact nya ke email saya bd39pr@gmail.com
Maksudnya agan pengen kotak saya langsung? bisa ke duniailkom@gmail.com gan. Tp memang saya prioritaskan untuk yang telah memberikan donasi atau membeli eBook duniailkom.
Selain itu agan bisa posting pertanyaannya di komentar ini. Biasanya dalam waktu 1×24 jam akan saya jawab kok…
bermnfaat sekali min…terimakasih
Siip, sama2…
"Fatal error: Cannot redeclare penambahan()". Ini kenapa ya min? tetep error walaupun udah copy-paste tutorialnya.
Dalam 1 halaman PHP, function penambahan() hanya bisa di defenisikan sekali. Dalam tutorial ini terdapat 2 kali pendefenisian fungsi penambahan(). Keduanya harus dijalankan dalam halaman yang terpisah.
mas,saya belajar membuat aplikasi angsuran spp,inpu,delete sudah fix tapi saya bingung menjumlahkan total dari tabel pembayaran persiswa dan pengurangan dari jumlah yang harus dibayar siswa yg saya masukkan di tabel siswa..
———
kira2 scriptnya gimana mas?
kan itu hasil dari array mysql?cara jumlah/totalnya gmna?
trima kasih sblumnya
Wah, kode programnya bisa ratusan atau ribuan baris nih. Saran saya silahkan pelajari konsep PHP dan MySQL dari dasar lagi, nanti bakal bisa sendiri tuh.
Bang Andre mau tanya kenapa untuk bagian $nilai_argumen_ke_2 = func_get_arg(1) ,dibrowser keluar bukan nilai argumen nya .dan terdapat notifikasi
Notice: Array to string conversion in C:\xampp\htdocs……… line 13
untuk lebih jelasnya menghasilkan seperti ini di browser
Rincian dari fungsi penambahan (1,2) :
Jumlah argumen : 2
Notice: Array to string conversion in C:\xampp\htdocs\………………….. on line 13
Nilai argumen ke-2 : Array
Array argumen: array(2) { [0]=> int(1) [1]=> int(2) }
Kodenya ada ditambahkan atau diedit lagi ya? barusan saya coba g ada masalah (contoh kode program yang ada di tutorial ini).
Coba di copy paste saja agar tidak ada error…
Sesuai Contoh bang, oke coba saya copy paste lagi saja .Untuk saya cocokan bagian yang salahnya .Thank you Bang Andre
Om Andre saya sudah hajar 44 materi dasar php disini terus lanjut kemana baiknya ?
Bisa coba lanjut ke materi lanjutannya, atau boleh juga order eBook PHP Uncover untuk tambahan materi yang lebih banyak, hehe…