Array pada PHP

Array pada PHP tidak seperti array pada bahasa pemrograman lainnya. Array pada PHP lebih mirip dengan dictionary pada C#, Visual Basic atau bahasa pemrograman lainnya. Array pada PHP dapat diperlakukan seperti array biasa pada bahasa pemrograman lain, dan juga bisa lebih dari array pada bahasa pemrograman lain.

Fungsi print_r pada PHP

Dalam menampilkan isi suatu variabel array atau object, Saya sering menggunakan fungsi print_r(). Selain fungsi print_r(), fungsi var_dump() juga sering digunakan. Saya lebih senang menggunakan fungsi print_r() karena menurut Saya tampak lebih rapi.

$angkas = array(1,2,3,4,5,6,7,8,9,10);
print_r($angkas); //Versi singkat
echo "<br /><br />";
echo "<pre>".print_r($angkas, true)."</pre>";

Output:

Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [6] => 7 [7] => 8 [8] => 9 [9] => 10 )
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [3] => 4
    [4] => 5
    [5] => 6
    [6] => 7
    [7] => 8
    [8] => 9
    [9] => 10
)

Pada contoh di atas, $angkas diisi dengan angka 1 sampai 10. Kemudian, print_r() yang pertama, menampilkan isi dari $angkas. Akan tetapi keluaran dari fungsi print_r() ini hanya tampak pada satu baris meskipun sebenarnya telah diformat dengan rapi oleh PHP, bisa dilihat dengan "view source" pada browser.

Agar tidak repot "view source", Saya seringkali membungkus print_r() dengan tag <pre>, sehingga enter (karakter newline) tetap ditampilkan sebagai baris baru pada browser. Dengan cara ini, fungsi print_r(), harus diberi parameter tambahan bernilai true.

Cara yang kedua lebi jelas dapat dilihat di fungsi print_r() di php.net. Tidak dijelaskan di sini karena dibutuhkan pemahaman mengenai fungsi dan return pada PHP untuk memahaminya, sedangkan fungsi dan return belum dibahas sampai di sini.

Array numerik pada PHP

Array PHP yang dimaksud di sini lebih tepat disebut Array berindeks numerik. Array berindeks numerik adalah array yang paling sederhana. Contoh sebelumnya adalah salah satu contoh penggunaan Array numerik. Array pada PHP dideklarasikan dengan cara:

$namas = array();

atau

$namas = [];

Atau tanpa dideklarasi terlebih dahulu, dapat langsung diisi (atau ditambah isinya) dengan cara:

$namas[] = "Fandi";
$namas[] = "Hendra";
$namas[] = "Agus";
$namas[] = "Dedi";
array_push($namas, "Suryadi");
echo "<pre>".print_r($namas, true)."</pre>";

Output:

Array
(
    [0] => Fandi
    [1] => Hendra
    [2] => Agus
    [3] => Dedi
    [4] => Suryadi
)

Ada dua cara di atas, yaitu dengan cara $namas [] = "sesuatu" dan array_push($namas, "sesuatu"). Cara yang pertama lebih sederhana dan lebih dianjurkan.

Array dapat langsung diisi dengan nilai-nilai awal dengan cara:

$pelajarans = array(
  "Matematika",
  "Kimia",
  "Fisika",
  "Biologi"
);
$nilais = [100, 80, 75, 78];

Cara lama adalah harus menggunakan fungsi array(). Akan tetapi, sejak PHP versi 5.5, dapat menggunakan sintaks yang lebih sederhana seperti pada variabel $nilais di atas.

Isi array dapat diakses atau dimodifikasi dengan cara menyebutkan indeksnya. Berikut adalah sambungan dari kode di atas:

$pelajarans = array("Matematika","Kimia","Fisika","Biologi");
$nilais = [100, 80, 75, 78];
for ($i=0; $i<=3; $i++) {
    echo "$i. Pelajaran $pelajarans[$i] nilainya $nilais[$i]<br />";
}

Output:

0. Pelajaran Matematika nilainya 100
1. Pelajaran Kimia nilainya 80
2. Pelajaran Fisika nilainya 75
3. Pelajaran Biologi nilainya 78

Contoh di atas hanya membaca elemen array saja, tanpa dimodifikasi.

Array string pada PHP

Array string memiliki indeks berupa string. Pendeklarasian array string caranya sama dengan deklarasi array numerik: $namas = array(); atau $angkas = [];. Sedangkan untuk menginisialisasi atau langsung mengisi array string, caranya:

$nilais = ["Matematika"=>100, "Kimia"=>80, "Fisika"=>75, "Biologi"=>78];
echo "<pre>".print_r($nilais,true)."</pre>";

Output:

Array
(
    [Matematika] => 100
    [Kimia] => 80
    [Fisika] => 75
    [Biologi] => 78
)

Seperti tampak pada hasil print_r(), nilai $nilais['Matematika'] adalah 100, $nilais["Kimia"] adalah 80, $nilais["Fisika"] adalah 75, dan nilai $nilais['Biologi'] adalah 78.

Perulangan foreach pada PHP

Dalam array string, misalnya $nilais di atas, indeks array seperti "Matematika", "Kimia" dan seterusnya lebih dikenal dengan sebutan key. Dan isi dari array seperti 100, 80, 75 dan 78 disebut dengan key.

Foreach adalah struktur perulangan seperti for dan while, terkecuali foreach harus digabungkan dengan array atau objek. Perulangan foreach melakukan perulangan untuk setiap elemen di dalam array.

$nilais = ["Matematika"=>100, "Kimia"=>80, "Fisika"=>75, "Biologi"=>78];
foreach ($nilais as $key => $value) {
  echo "Rata-rata nilai $key adalah $value <br />";
}

Output:

Rata-rata nilai Matematika adalah 100 
Rata-rata nilai Kimia adalah 80 
Rata-rata nilai Fisika adalah 75 
Rata-rata nilai Biologi adalah 78

Perulangan foreach di atas melakukan perulangan terhadap array $nilais. Pada setiap perulangan, Key dari elemen array dimasukkan ke dalam variabel $key, dan nilainya dimasukkan ke dalam $value.

Jika sudah paham, $key dan $value dapat juga diberi nama yang lebih bermakna:

$nilais = ["Matematika"=>100, "Kimia"=>80, "Fisika"=>75, "Biologi"=>78];
foreach ($nilais as $pelajaran => $nilai) {
  echo "Rata-rata nilai $pelajaran adalah $nilai<br />";
}

Seandainya indeks array tidak ingin dipakai, hanya ingin menggunakan nilainya saja, terdapat juga sintaks foreach yang lebih sederhana

$nilais = ["Matematika"=>100, "Kimia"=>80, "Fisika"=>75, "Biologi"=>78];
$total = 0;
foreach ($nilais as $nilai) {
  $total += $nilai;
  echo "$nilai ";
}
echo "<br />Total nilai keseluruhan:<br />$total";

Output:

100 80 75 78 
Total nilai keseluruhan:
333

Fungsi-fungsi array pada PHP

Untuk list lengkapnya, dapat dilihat di php.net. Beberapa fungsi yang sering saya pakai antara lain: explode(), implode(), count(), in_array(), asort() dan arsort(), ksort dan krsort().

Fungsi explode() adalah untuk mengubah satu string CSV (Comma Separated Value) menjadi array. Sedangkan implode() sebaliknya menggabungkan semua elemen di dalam suatu array ke dalam satu string. asort() mengurutkan suatu array, sedangkan arsort() mengurutkan juga tetapi dengan urutan kebalikan. ksort() dan krsort() sama dengan asort() dan arsort(), hanya saja yang diurutkan adalah key dari array tersebut.

$nilais = ["Matematika"=>100, "Kimia"=>80, "Fisika"=>75, "Biologi"=>78];
$str = implode(", ", $nilais);
echo $str;
$hobi = "Olahraga, Main game, Nonton, Makan, Nongkrong";
$hobis = explode(", ", $hobi);
echo "<pre>".print_r($hobis, true)."</pre>";
asort($hobis);
echo "Setelah sort:";
echo "<pre>".print_r($hobis, true)."</pre>";

Output:

100, 80, 75, 78
Array
(
    [0] => Olahraga
    [1] => Main game
    [2] => Nonton
    [3] => Makan
    [4] => Nongkrong
)
Setelah sort:
Array
(
    [1] => Main game
    [3] => Makan
    [4] => Nongkrong
    [2] => Nonton
    [0] => Olahraga
)

Fungsi count() menghasilkan jumlah elemen di dalam array, sedangkan in_array() untuk memeriksa apakah suatu nilai tertentu terdapat di dalam suatu array. Fungsi ini cukup mudah dipahami, silahkan coba sendiri.

Array superglobals pada PHP

Pada PHP, terdapat variabel yang selalu dapat diakses di dalam fungsi apapun, ataupun di luar fungsi. Variabel-variabel ini dinamakan variabel superglobals.

Kita sudah berkenalan dengan $_POST dan $_GET. Selain itu, terdapat juga $_SERVER, $_SESSION, $_COOKIE, $_FILES, $_REQUEST, $_ENV.

Karena superglobals merupakan array, Anda juga dapat mencoba melihat isinya dengan perintah print_r(). Session, cookie, files akan dibahas pada topik-topik selanjutnya.