BAB 5: ARRAY

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() dan var_dump()
  • Menggunakan count() dan empty() 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
<?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.

php
$fruits = ["Apple", "Banana", "Cherry"];
IndexValue
[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.

RakIsi
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.

💡Tip

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
<?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,
];

?>
⚠️Perhatian

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
<?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
<?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
<?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

?>
💡Tip

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
<?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
<?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}

?>
💡Tip

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
<?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
<?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

?>
💡Tip

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
<?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',
// )

?>
⚠️Perhatian

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

MistakeContoh SalahKenapa SalahSolusi
Mengira index mulai dari 1$arr[1] untuk elemen pertamaIndex dimulai dari 0Gunakan $arr[0]
echo pada arrayecho $arr;Warning + output tidak bergunaGunakan print_r($arr)
Akses key tanpa cek$arr["name"] langsungWarning "Undefined array key"Cek dengan isset() / array_key_exists(), atau pakai ??
Memanggil count() di dalam loopfor ($i = 0; $i < count($arr); $i++)Dihitung ulang setiap iterasiSimpan $n = count($arr); di luar loop
Lupa trailing commaelemen terakhir tanpa komaMenambah elemen berarti mengubah 2 barisAkhiri setiap elemen dengan koma

Exercise

  1. Buat array berisi 5 nama buah
  2. Akses elemen pertama dan terakhir dari array tersebut
  3. Buat associative array untuk data siswa (nama, NIS, kelas)
  4. Apa perbedaan empty() dan count()?
  5. Buat array berisi 10 angka, lalu gunakan foreach untuk menjumlahkan semuanya
  6. Gunakan print_r() dan var_dump() pada array yang sama, lalu bandingkan outputnya
  7. Buat associative array berisi 3 buah beserta harganya, lalu loop dengan foreach untuk menampilkan nama: harga untuk setiap pasangan

Summary

KonsepPenjelasan
ArrayStruktur data yang menyimpan banyak nilai dalam satu variabel
IndexPosisi elemen, dimulai dari 0 untuk indexed array
Sintaks []Cara modern membuat array (PHP 5.4+)
$arr[] = $valueMenambahkan elemen di akhir array
Associative arrayArray 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
foreachLoop paling aman untuk mengulang array

Klik tombol ini setelah menyelesaikan materi

📝

Quiz Bab 5

Uji pemahamanmu tentang Array