i (am) Blogger and U?

from X-periment to X-perience

Toko Online Barang Digital 1

Toko Online Barang Digital 1 adalah paket full-features aplikasi toko online khusus untuk benda/barang digital seperti aplikasi/software atau ebook pdf, doc dkk yang dapat digunakan unt [...]

Aplikasi Web: Forum Mirip Twitter

Aplikasi ini merupakan aplikasi layaknya forum pada umumnya. Hal spesial dari aplikasi ini adalah adanya tambahan yang mirip dengan Twitter. Fitur-fitur yang dimiliki antara lain: foll [...]

Badge/Watermark Image Generator

Badge/Watermark Image Generator adalah aplikasi web yang digunakan untuk membuat badge/watermark atau penanda pada foto/gambar yang biasanya digunakan misalnya pada penanda foto produk [...]

Web Profil / Portofolio Basic 1

Web Profil/Portofolio Basic 1, aplikasi/software untuk mengelola portofolio (atau bisa juga dijadikan sebagai photo/image gallery) atau untuk menampilkan profil perusahaan maupun perseo [...]

Aplikasi Web: Custom Form

Aplikasi Web Custom Form, software berbasis web dengan fitur utama adalah pembuatan DYNAMIC FORM (form web dinamis). Form ini terdiri dari berbagai jenis field, seperti field input text [...]

One-Page Portofolio / Gallery 3

One-Page Portofolio / Gallery 3 memiliki fitur-fitur yang sama persis dengan One-Page Portofolio / Gallery 1 tapi dengan theme/template yang berbeda.

[Tips PHP] Nomor Undian tak Berulang

Category: Tips dan TrikDate:
Sunday, 05 May 2019

Kali ini saya akan membahas tentang kasus di mana kita butuh untuk membuat nomor undian tak berulang. Contoh kasusnya adalah misalkan ada nomor 1 s.d. 5 dan diambil 2 nomor secara acak tanpa berulang (artinya yg sudah dipilih tidak masuk dalam pemilihan berikutnya). Pengambilan secara acak ini pun bisa dibagi menjadi dua yakni program secara langsung memilih 2 nomor acak dan program dijalankan dua kali dan tiap kali dijalankan akan memilih satu nomor acak.

Pertama akan saya contohkan untuk mengambil 2 nomor acak secara langsung dalam satu kali eksekusi. Nomor akan diwakili dengan variabel $semua_nomor yang berisi array dengan komposisi seperti dalam komposisi array 1.

[php]
$semua_nomor = range(1,5);

#komposisi array 1
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
[/php]


Berikut ini adalah skrip lengkap dan penjelasannya
[php]
$semua_nomor = range(1,5);

#awal
echo 'keadaan awal: ';
print_r($semua_nomor);
echo '
';

$jumlah_pilihan = 2;
$terpilih = array();

foreach(range(1,$jumlah_pilihan) as $i){
$index = array_keys($semua_nomor);
$index = $index[mt_rand(0, count($index) - 1)];
$terpilih[$index] = $index;
unset($semua_nomor[$index]);
}

#setelah dipilih
echo 'keadaan setelah dilakukan pemilihan: ';
print_r($semua_nomor);
echo '
';

#hasil yg dipilih [index array]
echo 'yang terpilih: ';
print_r($terpilih);
[/php]


Penggunaan range() di sini adalah untuk memudahkan membuat "dummy array" (misalkan Anda ingin membuat 200 array, tinggal gunakan range(1,200)).

array_keys() akan "menampung" index array bahkan ketika index array berbeda jenis, misalkan Anda punya array seperti ini
[php]
$arraykey = array_keys(['satu'=> 1, 'satu1'=> 11, 2 => 'dua', 22 => 'dua2', 0 => 0]);
#atau
$arraykey = array_keys(array('satu'=> 1, 'satu1'=> 11, 2 => 'dua', 22 => 'dua2', 0 => 0));
[/php]


Kalau Anda meng-echo [karena ini array maka gunakan print_r()] $arraykey akan didapatkan
[php]
Array
(
[0] => satu
[1] => satu1
[2] => 2
[3] => 22
[4] => 0
)
[/php]


Kembali ke penjelasan, selanjutnya adalah mt_rand() dipakai untuk melakukan random terhadap index array dari array yang dihasilkan oleh array_keys().

Variabel $index akan menyimpan hasil random yang dilakukan mt_rand(), dalam hal ini adalah indeks array dari $semua_nomor.

Indeks array kemudian disimpan dalam variabel $terpilih

Terakhir gunakan unset() terhadap $index yang sudah dipilih untuk `menghapusnya` (dengan cara ini perulangan tidak akan terjadi).

Salah satu hasil yang mungkin ketika skrip dieksekusi adalah:
[php]
keadaan awal: Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)

keadaan setelah dilakukan pemilihan: Array
(
[0] => 1
[1] => 2
[3] => 4
)

yang terpilih: Array
(
[4] => 4
[2] => 2
)
[/php]


No comments...
>> Comments closed. <<