5-1: Array Basics
Objectives
- Memahami apa itu array dan kenapa kita membutuhkannya
- Membuat indexed array dan associative array
- Menampilkan isi array dengan
print_r()danvar_dump() - Menggunakan
count()danempty()untuk memeriksa array - Mengulang isi array dengan
foreach
Apa itu Array?
Array adalah struktur data yang menyimpan multiple values dalam satu variabel. Tanpa array, kita harus membuat variabel terpisah untuk setiap data:
<?php
// Tanpa array: variabel berantakan dan susah dikelola
$buah1 = "Apple";
$buah2 = "Banana";
$buah3 = "Cherry";
$buah4 = "Date";
$buah5 = "Elderberry";
// Dengan array: satu variabel, banyak data
$buah = ["Apple", "Banana", "Cherry", "Date", "Elderberry"];
?>
Bayangkan kamu harus mengirim 100 nama siswa ke sebuah function. Apakah kamu akan membuat 100 variabel bernama $siswa1 sampai $siswa100? Tentu tidak. Array memungkinkan kita menyimpan semuanya dalam satu variabel, lalu mengulangnya dengan loop — tanpa harus menulis ulang kode untuk setiap elemen.
$fruits = ["Apple", "Banana", "Cherry"];
| Index | Value |
|---|---|
| [0] | "Apple" |
| [1] | "Banana" |
| [2] | "Cherry" |
Setiap nilai di dalam array punya index (posisi) yang dimulai dari 0 (nol), bukan 1. Jadi elemen pertama berada di index 0, elemen kedua di index 1, dan seterusnya.
Analogi: Lemari Buku
Anggap array seperti lemari buku dengan rak bernomor. Isi rak bisa kamu ganti, tambah rak baru di ujung, atau kosongkan satu rak — selama kamu tahu nomor raknya, kamu bisa ambil bukunya.
| Rak | Isi |
|---|---|
| Rak [0] | "Novel" |
| Rak [1] | "Komik" |
| Rak [2] | "Ensiklopedia" |
| Rak [3] | "Kamus" |
Untuk mengambil buku dari rak, kamu bilang $books[2] — artinya "ambilkan buku di rak nomor 2". Itulah cara kerja array di PHP: kamu akses elemen lewat index-nya.
Ingat: index array dimulai dari 0. Ini salah satu sumber kebingungan terbesar untuk pemula. $arr[1] adalah elemen kedua, bukan pertama!
Membuat Array
Ada dua cara membuat array di PHP: sintaks pendek [] (PHP 5.4+) dan function array() (gaya lama). Selalu gunakan sintaks pendek [] — lebih modern, lebih ringkas, dan dipakai di semua kode PHP modern.
<?php
// Array syntax (PHP 5.4+)
$colors = ["Red", "Green", "Blue"];
// Array function (compatible dengan PHP lama)
$colors = array("Red", "Green", "Blue");
// Empty array
$empty = [];
// Array dengan mixed types
$mixed = ["text", 42, 3.14, true, null];
// Array dengan key string dan integer sekaligus
$campur = [
"nama" => "Andi",
0 => "nol",
"umur" => 25,
];
?>
Meskipun PHP memperbolehkan campuran tipe data dalam satu array, sebaiknya jaga satu array berisi satu jenis data saja. Array campuran seperti ["text", 42, 3.14] membuat kode susah dibaca dan rawan bug yang sulit dilacak.
PHP juga mendukung trailing comma — koma di akhir elemen terakhir. Ini berguna saat menambah elemen baru nanti, karena baris terakhir cukup disalin:
<?php
$config = [
"host" => "localhost",
"port" => 3306,
"user" => "root", // trailing comma, valid di PHP
];
?>
Indexed Array
Indexed array adalah array yang menggunakan angka sebagai index, dimulai dari 0. Ini jenis array paling sederhana dan paling sering dipakai untuk daftar item yang berurutan.
<?php
$fruits = ["Apple", "Banana", "Cherry"];
// Access element
echo $fruits[0]; // Output: Apple
echo $fruits[1]; // Output: Banana
echo $fruits[2]; // Output: Cherry
// Add element
$fruits[] = "Date"; // Append ke akhir
array_push($fruits, "Elderberry"); // Sama
// Count
echo count($fruits); // Output: 5
?>
$fruits[] = "Date" dan array_push($fruits, "Date") melakukan hal yang sama: menambahkan elemen di akhir array. Notasi $fruits[] lebih pendek, jadi lebih umum dipakai di kode produksi.
<?php
$fruits = ["Apple", "Banana", "Cherry"];
// Index tidak harus literal — bisa dari variabel
$posisi = 2;
echo $fruits[$posisi]; // Output: Cherry
// Iterasi dengan foreach
foreach ($fruits as $fruit) {
echo $fruit . "\n";
}
// Output:
// Apple
// Banana
// Cherry
// Iterasi sambil menampilkan index
foreach ($fruits as $index => $fruit) {
echo "Index $index berisi $fruit\n";
}
// Output:
// Index 0 berisi Apple
// Index 1 berisi Banana
// Index 2 berisi Cherry
?>
foreach adalah cara paling aman untuk mengulang array di PHP. Kamu tidak perlu menghitung panjang array atau khawatir index-nya loncat-loncat seperti saat memakai for.
Associative Array
Associative array menggunakan string sebagai key, bukan angka. Ini seperti buku telepon: kamu mencari kontak berdasarkan nama, bukan berdasarkan nomor urut. Key yang meaningful membuat kode jauh lebih mudah dibaca — $user["email"] jauh lebih jelas daripada $user[1].
<?php
$user = [
"name" => "Andi",
"email" => "andi@example.com",
"age" => 25
];
// Access by key
echo $user["name"]; // Output: Andi
echo $user["email"]; // Output: andi@example.com
// Add new key
$user["city"] = "Jakarta";
// Nested associative
$user["address"] = [
"street" => "Jl. Sudirman",
"city" => "Jakarta"
];
echo $user["address"]["city"]; // Output: Jakarta
?>
Operator => memetakan key ke value. Baca "name" => "Andi" sebagai "key name menyimpan nilai Andi". Key selalu di sisi kiri, value di sisi kanan.
<?php
$user = [
"name" => "Andi",
"email" => "andi@example.com",
"age" => 25
];
// Loop associative array: dapatkan key DAN value sekaligus
foreach ($user as $key => $value) {
echo "$key: $value\n";
}
// Output:
// name: Andi
// email: andi@example.com
// age: 25
// Tampilkan dalam format JSON (sangat umum di API)
echo json_encode($user);
// Output: {"name":"Andi","email":"andi@example.com","age":25}
?>
Associative array adalah tulang punggung pemrograman web dengan PHP. Data dari database, form ($_POST, $_GET), dan response API semuanya berbentuk associative array. Kuasai topik ini sebaik mungkin — material berikutnya akan membahasnya lebih dalam.
Checking Array
PHP menyediakan beberapa function untuk memeriksa isi array sebelum dipakai. Ini mencegah error "Undefined array key" yang sangat umum di kalangan pemula.
<?php
$empty = [];
$filled = ["a", "b"];
// empty() - true jika array kosong
var_dump(empty($empty)); // Output: bool(true)
var_dump(empty($filled)); // Output: bool(false)
// count() - jumlah element
echo count($empty); // Output: 0
echo count($filled); // Output: 2
// isset() - cek key exists (nilai tidak null)
$arr = ["a" => 1, "b" => 2];
var_dump(isset($arr["a"])); // Output: bool(true)
var_dump(isset($arr["c"])); // Output: bool(false)
// array_key_exists() - cek key exists walau nilainya null
$arr2 = ["x" => null];
var_dump(isset($arr2["x"])); // Output: bool(false)
var_dump(array_key_exists("x", $arr2)); // Output: bool(true)
?>
Perbedaan isset() dan array_key_exists() cukup penting: isset() mengembalikan false jika key ada tapi nilainya null, sedangkan array_key_exists() mengembalikan true. Kalau kamu hanya ingin tahu "apakah key-nya ada", pakai array_key_exists(). Kalau kamu ingin tahu "apakah key-nya ada dan bisa dipakai", pakai isset().
<?php
$arr = ["a" => 1, "b" => 2];
// Pengaman: cek dulu sebelum akses
if (array_key_exists("c", $arr)) {
echo $arr["c"];
} else {
echo "Key c tidak ada"; // Output: Key c tidak ada
}
// Cara singkat: null coalescing operator (PHP 7+)
echo $arr["c"] ?? "default"; // Output: default
// Ternary alternatif (gaya lama, lebih panjang)
echo isset($arr["c"]) ? $arr["c"] : "default"; // Output: default
?>
Mulai terbiasa dengan operator ?? (null coalescing). Satu baris $value = $arr["key"] ?? "fallback"; menggantikan lima baris if-else, dan pola ini sangat umum di kode produksi PHP.
Menampilkan Array
echo tidak bisa menampilkan array secara langsung — PHP akan melempar warning "Array to string conversion". Gunakan print_r() untuk output yang rapi atau var_dump() untuk output yang detail (termasuk tipe data dan panjang string).
<?php
$fruits = ["Apple", "Banana", "Cherry"];
// print_r: output rapi untuk debugging
print_r($fruits);
// Output:
// Array
// (
// [0] => Apple
// [1] => Banana
// [2] => Cherry
// )
// var_dump: output detail termasuk tipe data
var_dump($fruits);
// Output:
// array(3) {
// [0]=> string(5) "Apple"
// [1]=> string(6) "Banana"
// [2]=> string(6) "Cherry"
// }
// var_export: output yang bisa dipaste ulang sebagai kode PHP
$exported = var_export($fruits, true);
echo $exported;
// Output:
// array (
// 0 => 'Apple',
// 1 => 'Banana',
// 2 => 'Cherry',
// )
?>
Jangan pernah menulis echo $array; untuk debugging — selain memunculkan warning, outputnya hanya string "Array" yang tidak membantu sama sekali. Selalu pakai print_r() atau var_dump().
Common Mistakes
| Mistake | Contoh Salah | Kenapa Salah | Solusi |
|---|---|---|---|
| Mengira index mulai dari 1 | $arr[1] untuk elemen pertama | Index dimulai dari 0 | Gunakan $arr[0] |
echo pada array | echo $arr; | Warning + output tidak berguna | Gunakan print_r($arr) |
| Akses key tanpa cek | $arr["name"] langsung | Warning "Undefined array key" | Cek dengan isset() / array_key_exists(), atau pakai ?? |
Memanggil count() di dalam loop | for ($i = 0; $i < count($arr); $i++) | Dihitung ulang setiap iterasi | Simpan $n = count($arr); di luar loop |
| Lupa trailing comma | elemen terakhir tanpa koma | Menambah elemen berarti mengubah 2 baris | Akhiri setiap elemen dengan koma |
Exercise
- Buat array berisi 5 nama buah
- Akses elemen pertama dan terakhir dari array tersebut
- Buat associative array untuk data siswa (nama, NIS, kelas)
- Apa perbedaan
empty()dancount()? - Buat array berisi 10 angka, lalu gunakan
foreachuntuk menjumlahkan semuanya - Gunakan
print_r()danvar_dump()pada array yang sama, lalu bandingkan outputnya - Buat associative array berisi 3 buah beserta harganya, lalu loop dengan
foreachuntuk menampilkannama: hargauntuk setiap pasangan
Summary
| Konsep | Penjelasan |
|---|---|
| Array | Struktur data yang menyimpan banyak nilai dalam satu variabel |
| Index | Posisi elemen, dimulai dari 0 untuk indexed array |
Sintaks [] | Cara modern membuat array (PHP 5.4+) |
$arr[] = $value | Menambahkan elemen di akhir array |
| Associative array | Array dengan key string yang meaningful, memakai => |
count($arr) | Jumlah elemen dalam array |
empty($arr) | true jika array kosong |
isset($arr[$key]) | Cek key ada dan nilainya bukan null |
array_key_exists($key, $arr) | Cek key ada meskipun nilainya null |
print_r() / var_dump() | Menampilkan isi array untuk debugging |
foreach | Loop paling aman untuk mengulang array |
Klik tombol ini setelah menyelesaikan materi
Quiz Bab 5
Uji pemahamanmu tentang Array