Dalam banyak aplikasi Web, seringkali kita membutuhkansebuah variabel yang mampu menyimpan beberapa nilai sekaligus secaraterorganisir, sehingga lain saat kita dapat memperolehkembali nilai-nilai tersebut dengan mudah dan dalam bentuk yang teratur danterorganisir pula. Tidak, bukan database yang saya maksud, karena saya sedangbicara variabel, dan database bukanvariabel. Mengapa ini sangat penting? Karena dalambanyak kasus kita hanya membutuhkan penyimpan nilai sementara yang terorganisirdengan baik, dan database sangat mahal untuk melakukan hal tersebut. Bayangkantentang koneksi, query dan seterusnya yang akanmemperlambat proses apabila kita menggunakan database.
Di sinilah kita membutuhkan array, sebuahtipe variabel yang mampu menyimpan beberapa nilai sekaligus bahkan dalam tipeberbeda yang terorganisir dengan baik. Sehingga dalam bahasa pemrogramanmanapun—termasuk PHP tentunya—Anda akan senantiasamenemukan array sebagai salah satu tipe variabelnya. Karena—maaf sayamenggunakan bahasa Inggris—array is powerful.
Array, Apa dan Mengapa
Array di PHP adalah tipe variabel spesial, karena denganarray kita dapat mengakses sekumpulan nilai dengan menggunakan satu nama variabel. Mekanisme pengaksesan ini diatur dalam bentukpemetaan (mapping) dari sekumpulan nilai (values) ke sekumpulankunci (keys) atau indeks. Sebagai contoh, variabel array $hacker dapat memetakan 1, 2 dan 3masing-masing ke "Eric S Raymond", "Richard Stallman" dan"Bruce Perens", sehingga dapat dinyatakan sebagai:
$hacker[1] = "Eric S Raymond";
$hacker[2] = "Richard Stallman";
$hacker[3] = "Bruce Perens";
dimana ekspresi 1, 2 dan 3 adalah indeks, sementara "Eric S Raymond","Richard Stallman" dan "Bruce Perens" adalahnilai-nilainya.
Arrayakan sangat berguna manakala kita mengolah sekumpulandata atau nilai dengan identitas serupa. Sebagai ilustrasi, katakanlah kitamemiliki data berupa nama hacker dan nama cracker.Jika tidak menggunakan array, maka yang terbaik yang bisa kita lakukan adalahdengan menyatakan seperti berikut:$hacker_1 = "Eric S Raymond";Jikakita perlu mencetak keenam data tersebut, maka caraberikut bisa digunakan:
$hacker_2 = "Richard Stallman";
$hacker_3 = "Bruce Parens";
$cracker_1 = "FALLEN";
$cracker_2 = "n3wb13";
$cracker_3 = "Neur0n";
print "Nama hacker ke 1: $hacker_1 <br>";Cara seperti ini mungkin efektif tetapi sayangnya jauh dariefisien. Mengapa? karenajika jumlah data hacker dan cracker di atas sampai puluhan bahkan ratusan, makabayangkan berapa banyak Anda harus mengetik perintah tersebut. Belum lagi,webserver harus melakukan parsing dari ratusan baris yang akanmemperlambat keseluruhan proses. Tidak percaya? Silakan dicoba sendiri.
print "Nama hacker ke 2: $hacker_2 <br>";
print "Nama hacker ke 3: $hacker_3 <br>";
print "Nama cracker ke 1: $cracker_1 <br>";
print "Nama cracker ke 2: $cracker_2 <br>";
print "Nama cracker ke 3: $cracker_3 <br>";
Dengan array, Anda dapat melakukan hal di atas dengan lebih baikefektif dan efisien. Untuk 900 data hacker dan cracker misalnya, Andacukup melakukan iterasi seperti berikut:
for ($k=0;$k<900;$k++)Singkat, sederhana, tetapi ampuh. Selainitu, banyaknya fungsi PHP untuk memanipulasi array membuat tipe variabel inisangat membantu kerja kita dalam membuat aplikasi web. Kita akan membahas beberapa fungsi PHP untuk memanipulasi arrayini pada bagian berikutnya.
{
print "Nama hacker ke $k: $hacker[$k] <br>";
}
for ($k=0;$k<900;$k++)
{
print "Nama cracker ke $k: $cracker[$k] <br>";
}
Inisialisasi dan Modifikasi Array
Untukmenginisialisasi sebuah array digunakan fungsi array(). Data hacker di atas misalnya dapat dibuat sebagai arraydengan:
$hacker = array("Eric S Raymond", "Richard Stallman",
"Bruce Perens");
Skripini akan menginisialisasi variabel $hackerdengan $hacker[0],$hacker[1] dan $hacker[2] masing-masing bernilai"Eric S Raymond", "Richard Stallman", dan "BrucePerens". Cara lain untuk ini adalah sebagaiberikut:
$hacker = array(0 => "Eric S Raymond",
1 => "Richard Stallman",
2 => "Bruce Perens");
Carapertama secara default akan menetapkan indeks secara berurutanmulai dari 0, sementara cara kedua kita sendiri yang menetapkannya. Anda bisasaja melakukan hal berikut:
$hacker = array(0 => "Eric S Raymond",
1 => "Richard Stallman",
3 => "Bruce Perens");
yang sama dengan:
$hacker = array("Eric S Raymond", "Richard Stallman",
3 => "Bruce Perens");
Danjika dicetak dengan skrip berikut:
for ($k=0;$k<=3;$k++)
{
print "\$hacker[$k] berisi: $hacker[$k]";
}
akan menghasilkan keluaran:
$hacker[0] berisi: Eric S Raymond
$hacker[1] berisi: Richard Stallman
$hacker[2] berisi:
$hacker[3] berisi: Bruce Perens
Untukmemodifikasi isi array Anda dapat menetapkan nilai secara eksplisit darielemen-elemen array. Sebagai contoh untuk variabel $hacker di atas, elemen dengan indeks 2 yang masih kosongdapat diisi secara langsung dengan:
$hacker[2] = "Rasmus Lerdorf";jika dicetak akan menghasilkan:
$hacker[0] berisi: Eric S RaymondSebenarnya,dengan sifat PHP yang weakly typed, Anda dapat mendeklarasikan array secara eksplisitsebagaimana kita memodifikasi elemen array di atas. Katakanlah jika variabel $location belum terdeklarasi sebelumnya,kita dapat mendeklarasikan $locationsebagai array dengan:
$hacker[1] berisi: Richard Stallman
$hacker[2] berisi: Rasmus Lerdorf
$hacker[3] berisi: Bruce Perens
$location[0] = "Pennsylvania";Andajuga dapat melakukannya dengan memanfaatkan sifat indeks array PHP yangmelakukan increment tiap kali dideklarasikan dengan indeks kosong seperti $location[],sehingga deklarasi berikut:
$location[1] = "Manhattan";
$location[] = "Daly City";akan mengisi $location[2]dan $location[3] dengan "Daly City" dan "Berkeley".
$location[] = "Berkeley";
Perludiperhatikan di sini, deklarasi array secara eksplisit tidak bisa dikatakansebagai inisialisasi, karena ia hanya mengakses satuelemen dari array, sehingga penambahan nilai pada indeks 2 seperti di atas,tidak sama dengan:
$hacker = array(2 => "Rasmus Lerdorf");Tidak percaya? Silakan coba sendiri, lalucetak tiap elemen arraynya.
Array Asosiatif
Variabel $hacker dan$location di atas memilikikarakteristik array pada umumnya, yaitu indeks berupa angka sehingga memudahkanuntuk dilakukan iterasi. Hal ini, sepertidiilustrasikan di atas, sangat membantu kita dalam banyak aplikasi.Sebagai contoh, jika kita ingin menggabungkan data hacker beserta lokasinyadari variabel $hacker dan $location, dengan mudah dapat kita lakukaniterasi sebagai berikut:
for ($k=0;$k<=3;$k++)yang menghasilkan keluaran seperti terlihat pada Gambar 1.Anda juga dapat menggunakan fungsi count() untuk menghitung jumlah elemen array, sehingga caraberikut lebih fleksibel:
{
print "$hacker[$k] tinggal di kota $location[$k]";
}
$pjg = count($hacker);Array dengan indeks berupa angka seperti $hacker dan $location di atas disebut juga dengan number-indexedarray. Disebut demikian karena ada array jenis lainyang memiliki indeks bukan angka melainkan string yang disebut dengan string-indexedarray atau lebih dikenal dengan array asosiatif atau hash.
for ($k=0;$k<$pjg;$k++)
{
print "$hacker[$k] tinggal di kota $location[$k]";
}
Arrayasosiatif sangat berguna khususnya dalam mengolah dua grup data yang memilikirelasi satu sama lain. Sebagai contoh, data hacker danlokasi tempat tinggalnya yang sebelumnya dengan number-indexed arrayharus dibuat dalam dua variabel $hackerdan $location, dengan arrayasosiatif dapat dibuat menjadi hanya satu variabel, di mana indeksnya berupa kota tempat tinggal, sementaranilainya adalah nama hacker bersangkutan. Inisialisasinya masih sama yaitumenggunakan array() seperti berikut:
$hacker = array( "Pennsylvania" => "Eric S Raymond",Arrayasosiatif dapat diakses secara langsung menggunakan ekspresi seperti $hacker["Pennsylvania"] atau $hacker['Pennsylvania'], di mana Pennsylvinia adalah indeksnya (yang berupa string).Sehingga $hacker['Pennsylvania'] akan bernilai "Eric SRaymond" dan seterusnya.
"Manhattan" => "Richard Stallman",
"Daly City" => "Rasmus Lerdorf",
"Berkeley" => "Bruce Perens" );
Pemilihankutip tunggal ('..')atau kutip ganda ("..")pada indeks array asosiatif adalah semata-mata pertimbangan kecepatan. Walaupunkeduanya sama-sama valid, namun sebagaimana dijelaskan pada tutorialsebelumnya, tanda kutip ganda akan membuat PHP mencarivariabel di dalam kutip ganda tersebut (dengan mendeteksi tanda $) untuk diganti dengan nilai sebenarnyayang membuat eksekusi lebih lambat. Oleh karena itu, saya hanya akan menggunakan kutip tunggal untuk indeks dari arrayasosiatif.
Denganindeks berupa string, array asosiatif memang tidak dapat diiterasi sepertisebelumnya menggunakan for,namun Anda dapat melakukan iterasi yang serupa dengan menggunakan sintaks foreach seperti:
foreach ($hacker as $kota=>$nama)yang akan mencetak keluaran yang sama seperti Gambar 1. foreachsebagaimana for adalah languageconstruct (bukan fungsi). foreach($array as$keys=>$values) akan melakukan iterasi terhadap $array lalu menetapkan indeks besertanilainya dari tiap elemen dalam pasangan $key=>$value,untuk kasus di atas tiap elemen array $hackerdinyatakan dalam pasangan variabel $kota=>$nama, kemudian variabel $kota dan $nama ini dapat diakses di dalam loop.
{
print "$nama tinggal di kota $kota";
}
Multidimensional Array
Bukan programer namanya kalau tidak banyak maunya. Jika PHP dapat menyediakan array dengan indeks angka atau string,bagaimana kalau keduanya? atau kombinasi darikeduanya?
Dan bukan PHP namanya kalo begini saja tidak bisa. PHP tidak hanya mampu menyediakan array dengan indeks gabunganangka dan string, bahkan lebih dari dua indekspun bisa. Array jenis ini disebut multidimensional array. Untukmenginisialisasi multidimensional array caranya serupa dengan sebelumnya yaitumenggunakan fungsi array() seperti berikut:$hacker = array( array( "nama" => "Eric S Raymond",Ya,array di dalam array, sesederhana itu. Dengan variabel $hacker seperti ini, kita dapat membuatkeluaran Gambar 1 lebih lengkap dengan link ke situs pribadi hackerbersangkutan, dengan cara berikut:
"kota" => "Pennsylvania",
"url" => "http://www.tuxedo.org/~esr"),
array( "nama" => "Richard Stallman",
"kota" => "Manhattan",
"url" => "http://www.stallman.org"),
array( "nama" => "Bruce Perens",
"kota" => "Berkeley",
"url" => "http://www.perens.com"),
array( "nama" => "Rasmus Lerdorf",
"kota" => "Daly City",
"url" => "http://lerdorf.com"));
$pjg_array = count($hacker);keluarannya terlihat pada Gambar 2. Perhatikan penggunaantanda kurung kurawal ({..})untuk menyertakan variabel array $hackerkedua di atas, ini harus dilakukan karena jika Anda menghilangkannya maka PHPakan menganggap array $hackertidak diekspresikan secara lengkap (indeks yang menggunakan tanda kutip akandianggap sebagai string baru bukan bagian dari array) sehingga akan munculpesan error. Jadi tanda kurung kurawal di sini bisa dikatakansebagai penyempurna ekspresi array. Anda dapat juga melakukan hal yang sama tanpa kurung kurawal yaitu dengan mengeluarkan ekspresiarray tersebut dari kutip ganda (seperti pada kasus ekspresi yang pertama).
for ($k=0;$k<$pjg_array;$k++)
{
print "<a href=\"{$hacker[$k]['url']}\">",
$hacker[$k]['nama'],
"</a> tinggal di kota {$hacker[$k]['kota']}";
}
MengolahForm Dengan Array
Untukmelengkapi pembahasan mengenai array ini, saya akanmencontohkan penggunaan array pada aplikasi Web, yaitu dalam mengolah isianform. Di sini akan digunakan beberapa fungsimanipulasi array di PHP yang sering dipakai, jadi siapkan manual PHP Anda.
Katakanlah kita membutuhkan informasi berupa biodata pengunjungsitus melalui form. Isian seperti nama, alamat,tanggal lahir dan lain-lain yang hanya berupa field satu isian masih mudahuntuk diolah. Yang menjadi masalah adalah manakala kita harusmengolah data isian dari multiple field seperti isian tentang jenis pekerjaanyang diinginkan misalnya seperti terlihat pada Gambar 3.
Untukini, Anda dapat saja menggunakan kode HTML berikut:
<form action="form.php" method="get">
Pekerjaan yang Anda inginkan : <br>
<select name="pekerjaan" multiple>
<option value="wm">Web Master</option>
<option value="sa">System Analyst</option>
<option value="wd">Web Designer</option>
<option value="wp">Web Programmer</option>
</select>
<br>
<input type="submit" value="ok">
</form>
Jikapengunjung memilih pilihan SystemAnalyst lalu menekan tombol okmaka variabel $pekerjaan dapatdiperoleh pada halaman form.phpdengan nilai "sa". Namun jika pengunjung memberikan masukan lebihdari satu, misalkan ia memilih sebagai system analystdan web programmer maka $pekerjaanakan bernilai "wp". Mengapa? karena $pekerjaanakan diassign dua kali yaitu $pekerjaan="sa"lalu $pekerjaan="wp"(kalau tidak percaya lihat URL yang tertera di browser Anda) sehingga di form.php variabel $pekerjaan ini hanya menyimpan nilaiterakhir yaitu "wp". Hal ini jelas tidak kitainginkan.
Denganarray, masalah ini dapat diatasi yaitu dengan sedikit mengubah skrip di atasmenjadi:
<form action="form.php" method="get">
Pekerjaan yang Anda inginkan : <br>
<select name="pekerjaan[]" multiple>
<option value="wm">Web Master</option>
<option value="sa">System Analyst</option>
<option value="wd">Web Designer</option>
<option value="wp">Web Programmer</option>
</select>
<br>
<input type="submit" value="ok">
</form>
Denganisian yang sama seperti di atas, maka variabel $pekerjaan[] akan diassign dua kali yaitu $pekerjaan[]="sa" dan $pekerjaan[]="wp". Hanya saja kali ini variabel $pekerjaanberupa array dengan elemen pertama bernilai "sa" dan elemen keduabernilai "wp". Sehingga jika di halaman form.php kita berikan skrip berikut:
<?php
$pjg_array=count($pekerjaan);
for ($k=0;$k<$pjg_array;$k++)
{
$cnt = $k+1;
print "Kode pekerjaan pilihan ke-$cnt : $pekerjaan[$k]";
}
?>
Keluarannya terlihat pada Gambar 4.
Kesimpulan
Pada tutorial kali ini Anda telah mempelajari salah satu tipevariabel yang sangat penting di PHP yaitu array. Mengapasaya katakan sangat penting? Karena banyak sekalifungsi-fungsi di PHP yang masukan dan atau keluarannya dalam format array.Sehingga pemahaman tentang konsep array sangat dibutuhkanuntuk menguasai bahasa pemrograman PHP. Sementarafungsi-fungsi yang berkaitan dengan manipulasi array yang sangat banyak di PHPdapat dengan mudah Anda pelajari setelah Anda memahami konsep dasarnya, yaitucukup membaca manual PHP lalu langsung mencobanya sendiri. Mengutipsalah satu iklan di teve: “Nggak ada noda, ya nggak belajar.” Jadi selamat mencoba.
sumber: http://master.web.id
sumber: http://master.web.id
Comments :
0 komentar to “Tutorial Array Pada PHP”
Posting Komentar
Silahkan Komentar di bawah ini: