Minggu, 31 Maret 2019

Mengenal Bahasa PHP [bagian 9] : ARRAY



Hai, hai, wahai pembaca🙌..

Bertemu lagi kita, hehe. Baiklah.💖 

Sebelumnya kita asumsikan variabel sebagai tipe data. Dan value merupakan nilai yang dimasukkan dalam variabel.

Kali ini kita akan kembali membahas bahasa PHP dengan fungsi ARRAY. Jika sebelumnya kita akan mendeklarasikan sebuah value ke dalam sebuah variabel, maka variabel tersebut harusnya hanya terdiri sari satu variabel saja. Setelah itu jika ingin menampilkan hasil yang berbeda maka kita harus kembali mengganti variabel masukan pertama sehingga hasil pertama tadi ditimpa oleh hasil yang baru setelah variabel baru dimasukkan.

Nah, bisa tidak kita menyatakan value lebih dari 1 ke dalam suatu variabel❓
Jawabannya, BISA. Variabel yang dapat menyatakan value lebih dari 1 adalah variabel bertipe data array. Misal, suatu variabel dinyatakan dengan X, maka value-value dalam X dapat kalian bayangkan seperti ini.

Nah, di dalam kotak-kotak ini kita dapat memasukkan beberapa value sekaligus. Keren yakk!! 😆 Ingat! Untuk PHP, nomor ruang array dimulai dari 0, bukan 1.

Berikut ini adalah bentuk umumnya:

$x = array();

Kelebihan lainnya adalah variabel bertipe data array ini bisa terdiri dari berbagai tipe data😦, misalnya di dalam kotak-kotak tadi bisa dideklarasikan dengan berbagai tipe data. Misal untuk kotak no 1 diisi value berupa bilangan bulat (integer), kotak  no 2 diisi bilangan real, kotak no 3 diisi string, dll.😎

Nah, berikut ini ada contoh tipe data array. Misal kita akan mengisi kotak no 3 dengan bilangan integer 10, dan kotak no 5 dengan string ‘I love PHP’, maka perintahnya adalah sebagai berikut.

<?php

$x=array();
$x[3]=10;
$x[5]="I love PHP";

?>



Kita juga bisa mengisi value tiap kotak pada array secara berturut-turut seperti contoh berikut.

<?php

$x=(10, 12, 3, 44, 50, "hallo");

?>



Atau dapat dibuat seperti ini.

<?php

$x=array(0=>10, 1=>12, 2=>3, 3=>44, 4=>50, 5=>"hallo");

?>



Nah, selanjutnya bagaimana kita dapat menampilkan value-value yang tersimpan di dalam array tersebut❔ Mudah saja, kita hanya perlu memanggil nomor kamar lalu di ‘echo’.

<?php

$x=array(10, 12, 3, 44, 50, "hallo");
echo $x[0]; // akan menampilkan value pada ruang ke-0, yaitu 10
echo $x[5]; // akan menampilkan value pada ruang ke-5, yaitu 'hallo'

$x[2]=-3; // mengganti value pada ruang ke-2 dengan value yang baru (-3)
echo $x[2]; // akan menghasilkan -3 (yang tampil bukan 3 karena sudah ditimpa -3)

?>




Kita juga bisa menampilkan semua value array sekaligus secara berturut-turut dengan looping.

<?php

$x=array(10, 12, 3, 44, 50, "hallo");
for($i=0;$i<=5;$i++)
{
    echo "Nilai kotak ke ".$i." dari array = ".$x[$i]."<br>";
}

?>




Atau kita dapat menggunakan perintah count() untuk menentukan jumlah ruang array yang telah diisi value.

<?php

$x=array(10, 12, 3, 44, 50, "hallo");
for($i=0;$i<=count($x)-1;$i++)
{
    echo "Nilai kotak ke ".$i." dari array = ".$x[$i]."<br>";
}

?>




Pada script di atas, perintah count($x) akan menghasilkan 6 sebab dalam array $x terdapat 6 ruang yang berisi value. Penggunaan count() ini sejujurnya untuk menghitung berapa banyak jumlah ruang array yang terisi value. Maka dari itu, daripada menghitung secara manual yang belum tentu benar, lebih baik menggunakan cara yang lebih efektif dan pasti benar :))💬.. Kalau ada cara yang lebih baik, kenapa kita harus bersusah-susah❓ :v

Array Asosiatif

Jika kita kembali melihat ruang-ruang kotak pada array, yang kita pikirkan pasti ‘ruang array ditandai dengan angka’. Enyahkan pikiran itu!💢 Nyatanya, kita dapat memberi tanda untuk ruang-ruang tersebut dengan kata atau karakter💀. Nah, inilah yang dinamakan array asosiatif😬. Berikut ini adalah contoh cara membuat array asosiatif dan cara menampilkan value pada ruangannya.

<?php

$x=array("kamar1"=>10, "kamar2"=>12, "kamar3"=>3, "kamar4"=>"hallo");
echo $x['kamar2']; // akan menampilkan 12
echo $x['kamar4']; // akan menampilkan "hallo"

?>




Sekarang bagaimana jika kita ingin menampilkan semua value dalam array asosiatif tersebut?❔Nah, jika pada array sebelumnya kita menggunakan looping, maka looping kali ini lebih spesial yaitu looping foreach.

<?php

$x=array("kamar1"=>10, "kamar2"=>12, "kamar3"=>3, "kamar4"=>"hallo");
foreach($x as $ruang=>$value)
{
    echo "Isi dari ruang : ".$ruang." adalah : ".$value."<br>";
}

?>




Menambah Elemen Array

Misalnya kita sudah memiliki array dengan ruang yang sudah terisi dengan value.

<?php

$x=(10, 12, 3, 44, 50, "hallo");

?>



Nah, cara untuk menambahkan elemen array artinya kita juga menambah sebuah ruang dalam array untuk diisi dengan value. Pada contoh di atas terdapat nomor ruangan yang terdiri dari ⓪, ①, ②, ③, ④, dan ⑤. Nah, di sini kita ingin menambah 1 ruang lagi yang artinya menambah ruang ke-⑥ .

Oke, cara pertama.✅

<?php

$x = array(10, 12, 3, 44, 50, "hallo");
$x[6] = 100;


?>



Cara kedua.✅

<?php

$x = array(10, 12, 3, 44, 50, "hallo");
$x[] = 100;

?>



Sekarang coba kita cek kuy➡, bener gak ruangnya bertambah?

<?php

$x = array(10, 12, 3, 44, 50, "hallo");
$x[] = 100;
for ($i = 0; $i <= count($x)-1; $i++)
{
    echo "Nilai kamar ke ".$i. " dari array = ".$x[$i]. "<br />";
}

?>



Yak, ternyata ruangnya benar-benar bertambah, kawan...😆 Untuk memastikan hasilnya, dapat kita coba tampilkan hasilnya pada browser.🎇


Contoh Kasus

Kasus ❶. Menghitung rata-rata beberapa bilangan💚

Misalkan diberikan bilangan-bilangan berikut : 9, 2, 10, 3, 7, 5, 2. Kemudian kita diminta membuat script untuk mencari rata-rata semua bilangan tersebut. Bisa saja sih kita pakek cara gini.⬇

<?php

$rataRata = (9 + 2 + 10 + 3 + 7 + 5 + 2)/7;
echo $rataRata;
?>



Tapi coba bayangin, misalnya jumlah bilangannya sampek 100 :)) Auto males ngerjain😵. Nah, jika kitaa menggunakan array, akan lebih mudah.😀

Langkah ke-1😉 : kita buat array yang ruangannya diisi bilangan-bilangan tadi.

<?php

$bil = array(9, 2, 10, 3, 7, 5, 2);

?>




Langkah ke-2😆 : kita hitung dulu hasil penjumlahannya dengan looping. Konsepnya begini : mula-mula, kita asumsikan hasil jumlahnya adalah 0 (karena kita belum mulai menjumlahkan), kemudian kita baca array ke-0, yaitu 9. Value ini kita jumlahkan dengan hasil jumlah sebelumnya yaitu 0 atau 0 + 9 = 9. Dengan demikian, hasil jumlahnya sekarang adalah 9. Demikin seterusnya sampai value terakhir.

<?php

$bil = array(9, 2, 10, 3, 7, 5, 2);
$jumlah = 0;
for ($i = 0; $i <= count($bil)-1; $i++)
{
    $jumlah = $jumlah + $bil[$i]; // atau bisa dituliskan $jumlah += $bil[$i];
}

?>



Langkah ke-3😇 : setelah kita dapatkan hasil jumlah seluruh valuenya, kita bisa hitung rata-ratanya

<?php

$bil = array(9, 2, 10, 3, 7, 5, 2);
$jumlah = 0;
for ($i = 0; $i <= count($bil)-1; $i++)
{
    $jumlah = $jumlah + $bil[$i]; // atau bisa dituliskan $jumlah += $bil[$i];
}
$rataRata = $jumlah/count($bil);
echo "Rata-ratanya adalah : ".$rataRata;

?>




Kasus ❷. Mencari nilai terbesar dari kumpulan bilangan💛

Misal diberikan bilangan berikut : 9, 2, 10, 3, 7, 5, 2. Kita diminta untuk membuat script yang menampilkan bilangan terbesar dari bilangan-bilangan tersebut. Tentu saja, tanpa menggunakan perhitungan yang rumit, kita sudah bisa menebak jawabannya, yaitu 10. Nah, sekarang, bagaimana caranya menyatakannya dalam program❔❔
Sejujurnya, seperti yang tak bilang sebelumnya, kenapa kita harus meribetkan sesuatu yang sudah jelas jawabannya :)) Jawabannya adalah karena kita hanyalah manusia biasa👀 yang tidak bisa membantah perintah, teman-teman..😃

Nah, untuk mengatasi persoalan ini, dapat kita peroleh jawabannya dengan konsep perbandingan.

Caranya seperti ini. Pertama kita asumsikan bilangan terbesarnya adalah bilangan pertama, yaitu 9👍. Selanjutnya bilangan ini akan dibandingkan dengan bilangan ke-1, yaitu 9. Karena 9 tidak lebih besar dari 9 maka bilangan terbesarnya tetap 9👌. Selanjutnya dibandingkan dengan bilangan ke-2 yaitu 2. Karena bilangan 2 tidak lebih dari 9 maka  bilangan terbesarnya tetap 9. Namun, ketika bilangan 9 tadi sudah dibandingkan, maka bilangan terbesarnya berubah menjadi 10. Proses ini dilanjutkan sampai bilangan terakhir🔁.

<?php

$bil = array(9, 2, 10, 3, 7, 5, 2);
$max = $bil[0];
for ($i = 0; $i <= count($bil)-1; $i++)
{
    if ($bil[$i] > $max) $max = $bil[$i];
}
echo "Bilangan terbesarnya adalah : ".$max;
?>




Kasus ❸. Identik dengan kasus 1, namun bilangan-bilangan yang akan dicari rata-ratanya diinputkan melalui form.💜

Nah, kita akan membuat form untuk memasukkan jumlah bilangannya lebih dulu.

<h1>Cari Rata-rata Bilangan</h1>
<form method="post" action="form2.php">
Masukkan Banyaknya Bilangan <input type="text" name="n" />
<input type="submit" name="submit" value="Submit" />
</form>




Selanjutnya kita buat form kedua✌ untuk memasukkan masing-masing bilangan sesuai jumlah bilangannya.

<h1>Cari Rata-rata Bilangan</h1>
<?php
$n = $_POST['n'];
echo "<form method='post' action='proses.php'>";
echo "<table>";
for ($i = 0; $i <= $n ; $i++)
{
    echo "<tr><td>Bil ke-".($i+1)."</td>
        <td><input type='text' name='data".$i."' /></td></tr>";
}
echo "<tr><td></td>
    <td><input type='submit' name='submit' value='Submit' /></td></tr>";
echo "</table>";
echo "</form>";
?>




Nah, selanjutnya muncul sebuah pertanyaan, bagaimana mendapatkan ‘jumlah komponen’ pada script ini❓ padahal jumlah komponen ini berada di form2.php . Atau dengan kata lain, bagaimana caranya jumlah komponen yang berada di form2.php ini juga bisa dikenali di script untuk memproses inputnya❓❓ Solusinya adalah... kita buat komponen hidden textbox yang berisi jumlah komponennya.

<h1>Cari Rata-rata Bilangan</h1>
<?php
$n = $_POST['n'];
echo "<form method='post' action='proseshidden.php'>";
echo "<table>";
for ($i = 0; $i <= $n-1; $i++)
{
    echo "<tr><td>Bil ke-".($i+1)."</td>
        <td><input type='text' name='data".$i."' /></td></tr>";
}
echo "<tr><td></td>
    <td><input type='submit' name='submit' value='Submit' /></td></tr>";
echo "<tr><td></td>
    <td><input type='hidden' name='n' value='".$n."'  /></td></tr>";
echo "</table>";
echo "</form>";
?>



Ingat❕❕ Komponen hidden text harus terletak dalam <form></form>. Sesuai namanya, komponen ini tersembunyi (tidak tampak pada browser)🙈. Namun begitu user mengklik submit, maka value ini ikut tersubmit untuk diproses pada script pemrosesnya.

Selanjutnya kita buat script untuk memprosesnya.

<h1>Cari Rata-rata Bilangan</h1>
<?php
// membaca jumlah komponen dari hidden textbox
$n = $_POST['n'];
// membaca value dari masing-masing komponen textbox
for ($i=0; $i <= $n - 1; $i++)
{
    $bilangan[$i] = $_POST['data'.$i];
}
// menjumlahkan nilai semua bilangan
$jumlah = 0;
for ($i=0; $i <= $n - 1; $i++)
{
    $jumlah += $bilangan[$i];
}
// hitung rata-rata
$rataRata = $jumlah/$_POST['n'];
echo  "Rata-ratanya adalah : ".$rataRata;

?>



Atau cara lain kalian bisa menggabungkan proses menjumlahkan nilai semua bilangan bersama proses membaca bilangan dari form menjadi satu bagian.🙇

<h1>Cari Rata-rata Bilangan</h1>
<?php
// membaca jumlah komponen dari hidden textbox
$n = $_POST['n'];
// membaca value dari masing-masing komponen textbox dan menjumlahkannya
$jumlah = 0;
for ($i=0; $i <= $n - 1; $i++)
{
    $bilangan[$i] = $_POST['data'.$i];
    $jumlah += $bilangan[$i];
}
// hitung rata-rata
$rataRata = $jumlah/$_POST['n'];
echo  "Rata-ratanya adalah : ".$rataRata;
?>



Tugas Untuk Anda
1. Perhatikan kembali kasus no. 2 pada bab ini. Apakah asumsi bilangan terbesar untuk  pertama  kali  harus  diberikan  pada  bilangan  yang  pertama?  Jelaskan jawaban Anda 
Jawab : Pada penyelesaikan kasus di atas, cara yang paling efektif adalah dengan membandingkannya. Jika masalah urutan bilangan pertama atau kedua, hal tersebut dilakukan untuk mempermudah pekerjaan.

2. Identik dengan kasus no. 2 pada bab ini, sekarang coba Anda buat script PHP untuk mencari nilai terkecil dari bilangan-bilangan 283, 182, 381, 119, 391, 591, 123, 124, 284, 215, 312.
Keterangan: tanpa menggunakan form input 
Jawab:
Listing program:
<?php
$bil=array(283, 182, 381, 119, 391, 591, 123, 124, 284, 215, 312);

$min=$bil[0];
for($i=0;$i<=count($bil)-1;$i++)
{
    if($bil[$i]<$min)$min=$bil[$i];
   
}
echo "Bilangan terkecilnya adalah : ".$min;
?>
 Hasil:

Caranya sama seperti kasus 2. Hanya ditukar tanda, dan mengganti kata 'max' dengan 'mix'.

3. Identik  dengan  kasus  no.  3  pada  bab  ini,  coba  Anda  buat  form  input  untuk memasukkan n buah bilangan, yang selanjutnya dicari nilai terbesar dan nilai terkecil, serta nilai jangkauan yang diperoleh dari nilai terbesar dikurangi nilai terkecil. 
Jawab:
Listing Program:
form1Tugas3array.php
<h1>Mencari Bilangan Terkecil, Terbesar, dan Jangkauan</h1>

<form method="POST" action="form2Tugas3array.php">
Masukkan Banyaknya Bilangan <input type="text" name="n">
<input type="submit" name="submit" value="Submit">
</form>
form2Tugas3array.php
<h1>Mencari Bilangan Terkecil, Terbesar, dan Jangkauan</h1>

<?php
$a = $_POST['n'];
echo "<form method='post' action='prosesTugas3array.php'>";
echo "<table>";
for ($i = 0; $i<$a; $i++)
{
    echo "<tr><td>Bil ke-".($i+1)."</td>
    <td><input type='text' name='data".$i."' /></td></tr>";
}
echo "<tr><td></td> <td><input type='submit' name='submit' value='Submit' /></td></tr>";
echo "<tr><td></td> <td><input type='hidden' name='n' value=$a  /></td></tr>";
echo "</table>";
echo "</form>";
?>
prosesTugas3array.php
<h1>Mencari Bilangan Terkecil, Terbesar, dan Jangkauan</h1>
<?php
$b=$_POST['n'];
for ($i=0; $i<$b; $i++)
{
    $a=$i+1;
    $bilangan[$i] = $_POST["data$i"];
    echo "Bilangan urutan ke-".$a." adalah ".$bilangan[$i]."<br>";
}
//menghitung nilai terkecil
$min=$bilangan[0];
for ($i=0; $i<=count($bilangan)-1; $i++)
{
    if($bilangan[$i]<$min)
    {
        $min=$bilangan[$i];
    }
}
//menghitung nilai terkecil
$max=$bilangan[0];
for ($i=0; $i<=count($bilangan)-1; $i++)
{
    if($bilangan[$i]>$max)
    {
        $max=$bilangan[$i];
    }
}
//menghitung jangkauan
$jang=$max-$min;

echo "Bilangan terkecilnya adalah ".$min."<br>";
echo "Bilangan terbesarnya adalah ".$max."<br>";
echo "Jangkauannya adalah ".$jang;
?>
Hasil:



4. Diketahui sebuah data bilangan berikut ini:
273 
281 
384 
119 
392 
184 
105 
129 
204 
219 
274 
275 
263
Buatlah script untuk fasilitas pencarian data bilangan. Mula-mula buatlah form untuk  memasukkan  bilangan  yang  ingin  dicari.  Selanjutnya  apabila  ditekan submit, maka berikutnya muncul status ‘ada atau tidaknya’ bilangan yang dicari dalam keseluruhan data. Jika ada, maka tampilkan urutan data ke berapa dari keseluruhan data (urutan dimulai dari 1, 2, 3, …)
Contoh:
Masukkan Bilangan yang dicari = 281 [submit]
Selanjutnya muncul keterangan:
“Bilangan yang Anda cari ada dalam data pada urutan ke-2” 
Jawab:
Listing Program:
formTugas4array.php
<h1>Pencarian Data Bilangan</h1>

<form method="POST" action="prosesTugas4array.php">
Masukkan Bilangan <input type="text" name="bil">
<input type="submit" name="submit" value="Submit">
</form>
prosesTugas4array.php
<?php
$bilangan=$_POST[bil];
$a=array(1=>273, 2=>281, 3=>384, 4=>119, 5=>392, 6=>184, 7=>105, 8=>129, 9=>204, 10=>219, 11=>274, 12=>275, 13=>263);
echo "Bilangan yang Anda masukkan adalah ".$bilangan;
echo "<br>";
echo "<br>";
for ($i=0; $i<=count($a)-1; $i++)
    {
        if($a[$i]==$bilangan)
        {
            $test= 1;
            $urut=$i;
        }

    }
if($test==1)
{
    echo "Bilangan yang Anda cari ada dalam data urutan ke-$urut";
}
else
    echo "Bilangan yang Anda cari tidak ada dalam data";
?>
 Hasil:

 Jika dimasukkan value yang tidak terdaftar:


5. Sebuah  toko  swalayan  ingin  membuat  aplikasi  sederhana  untuk  menghitung total  harga  yang  harus  dibayarkan  si  pembeli.  Misalkan  dalam  toko  tersebut hanya terdapat 10 jenis barang saja. Berikut daftar barang yang ada dalam toko beserta harganya 
Aplikasi ini terletak pada kasir. Berikut ini tampilan aplikasinya
Form pertama
Masukkan banyaknya jenis barang yang dibeli   [BANYAK JENIS BARANG]
[ SUBMIT ]
Form kedua
Masukkan kode barang yang dibeli dan banyaknya
Barang ke -1 [MASUKKAN KODE BARANG] [JUMLAH BRG]
Barang ke -2 [MASUKKAN KODE BARANG] [JUMLAH BRG]
Barang ke -3 [MASUKKAN KODE BARANG] [JUMLAH BRG]
[ SUBMIT ] 
Tampilan Output
Daftar Barang Yang Dibeli
Contoh: 
Misalkan ada konsumen yang membeli sabun Lifebuoy (10 buah), dan permen Blaster (20 pack), maka formnya:
Form Pertama:
Masukkan banyaknya jenis barang yang dibeli   [ 2 ]
[SUBMIT]
Form Kedua
Masukkan kode barang yang dibeli dan banyaknya
Barang ke -1  [ 1001 ]  [ 10 ]
Barang ke -2  [ 1002 ]  [ 20 ]
[ SUBMIT ]
Tampilan Output
Daftar Barang Yang Dibeli

Jawab:
Listing Program:
form1Tugas5array.php
<h1>Pembayaran Harga Barang</h1>
<form method="post" action="form2Tugas5array.php">
Masukkan banyaknya jenis barang yang dibeli <input type="text" name="jenis"><br>
<input type="submit" name="submit" value="Submit">
<input type="reset" name="reset" value="Reset">
</form>
 form2Tugas5array.php
<?php
$jenis=$_POST["jenis"];
echo "<form method=\"post\" action='prosesTugas5array.php'>";
echo "<table>";
for ($a = 0; $a<$jenis; $a++)
{
    $b=$a+1;
    echo "<tr><td>Barang ke-".$b."</td>
            <td><input type=\"text\" name=\"bar$a\"></td>
            <td><input type=\"text\" name=\"jum$a\"></td>
            </tr>";
}
echo "<input type=\"hidden\" name=\"jenbar\" value=\"$jenis\">";
echo "<tr>
        <td></td>
        <td><input type='submit' name='submit' value='Submit' /><input type='reset' name='reset' value='Reset' /></td>
        </tr>";
echo "</table>";
echo "</form>";
?>

 prosesTugas5array.php
<h1>Daftar Harga</h1>
<?php
$s=$_POST["jenbar"];
for($a=0; $a<$s; $a++)
{
    $kode[$a]=$_POST["bar$a"];
    $jumlah[$a]=$_POST["jum$a"];
}
$kod= array(1001, 1002, 1003, 1004, 1005, 1006, 1007, 1008, 1009, 1010);
$barang= array("Sabun Lifebuoy", "Permen Blaster", "Pasta Gigi Pepsodent", "Madu Arbain", "Kecap ABC", "Saus Tomat ABC", "Gula Gulaku", "Rinso", "Super Pel", "Permen Tango");
$harga = array(1500, 5600, 4560, 300007250, 6700, 8900, 7100, 6450, 5600);
echo "<table border=1>";
echo "<tr>
        <td>Kode</td>
<td>Barang</td>
        <td>Harga</td>
        </tr>";
for($a=0; $a<$s; $a++)
{
    for($i=0; $i<count($barang)-1; $i++)
    {
        if($kode[$a]==$kod[$i])
        {
            $l=$harga[$i]*$jumlah[$a];
            echo "<tr>  <td>$kode[$a]</td> <td>$barang[$i]</td> <td>$l</td>
</tr>";
            $t=$l+$t;
        }
    }
}
echo "<tr><td colspan=2>Total Belanja Anda adalah </td> <td>Rp$t</td></tr>";
echo "</table>";
?>

 Hasil:



Sekian contoh dan penjelasan di atas. Kalaupun belum jelas, silahkan bertanya agar lebih jelas. Karena sejujurnya, semua ini hanyalah tugas, kawan :).

Tidak ada komentar:

Posting Komentar

Upload File dengan PHP dan MySQL

Upload file adalah salah satu bagian terpenting dalam membuat aplikasi, khususnya yang berbasis web.Contohnya saat kita harus mengupload ent...