Menulis isi array satu per satu sudah kita lakukan pada Chapter-chapter sebelumnya, dan cara itu memang tepat untuk data kecil. Namun bayangkan harus mengetik angka 1 sampai 100 secara manual, atau menyiapkan papan skor 10 pemain yang semuanya dimulai dari nol. Untuk situasi seperti itu PHP menyediakan beberapa fungsi pembuat array yang bekerja dari pola atau sumber lain: range(), array_fill(), array_combine(), dan explode(). Pada Chapter ini kita akan mempelajari keempatnya, berikut dua keterampilan akses yang menyelamatkan kita dari jebakan umum: mengambil kunci tepi array dan mengakses kunci yang mungkin tidak ada tanpa memicu warning.
Membuat Deret dengan range #
Fungsi range() membuat array berisi deret nilai dari titik awal hingga titik akhir secara inklusif. Argumen ketima yang opsional mengatur langkah antar nilai:
<?php
$angka = range(1, 5);
print_r($angka);
$abjad = range("a", "e");
echo implode(", ", $abjad) . "\n";
$kelipatan = range(0, 100, 25);
echo implode(" - ", $kelipatan) . "\n";Output yang Dihasilkan:
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
[4] => 5
)
a, b, c, d, e
0 - 25 - 50 - 75 - 100Mari kita telaah tiga panggilan range() di atas:
range(1, 5)menghasilkan array[1, 2, 3, 4, 5]— kedua batas ikut masuk, danprint_r()menunjukkan penomoran otomatis dari0seperti biasa.range("a", "e")bekerja pada karakter tunggal, menghasilkan["a", "b", "c", "d", "e"]; fungsiimplode()menyatukannya menjadi string berpisah koma.range(0, 100, 25)memakai langkah25, menghasilkan[0, 25, 50, 75, 100]— pola yang pas untuk sumbu grafik atau pembagian skala.
Hasil range() adalah indexed array biasa, siap dipakai di perulangan atau digabung dengan array lain.
Mengisi Massal dengan array_fill #
Fungsi array_fill() membuat array dengan jumlah elemen tertentu yang semuanya berisi nilai yang sama. Argumennya berurutan: indeks awal, jumlah elemen, dan nilai pengisi:
<?php
$papanSkor = array_fill(0, 3, 0);
print_r($papanSkor);
$label = array_fill(1, 2, "kosong");
echo $label[1] . "\n";
echo $label[2] . "\n";Output yang Dihasilkan:
Array
(
[0] => 0
[1] => 0
[2] => 0
)
kosong
kosongPanggilan array_fill(0, 3, 0) membuat tiga elemen bernilai 0 mulai dari indeks 0 — pas untuk menginisialisasi papan skor sebelum pertandingan dimulai. Panggilan kedua, array_fill(1, 2, "kosong"), membuktikan bahwa indeks awal bebas dipilih: dua elemen "kosong" tersimpan di indeks 1 dan 2. Nilai pengisi boleh apa pun, termasuk null atau string kosong, karena yang dijaminkan sama adalah nilainya, bukan isinya.
Menggabungkan Dua Array dengan array_combine #
Fungsi array_combine() menjahit dua array menjadi satu associative array: array pertama menjadi sumber kunci, array kedua menjadi sumber nilai:
<?php
$kunci = ["nama", "email", "kota"];
$nilai = ["Budi Santoso", "[email protected]", "Jakarta"];
$pengguna = array_combine($kunci, $nilai);
print_r($pengguna);Output yang Dihasilkan:
Array
(
[nama] => Budi Santoso
[email] => [email protected]
[kota] => Jakarta
)Elemen ke-n dari $kunci dipasangkan dengan elemen ke-n dari $nilai — "nama" dengan "Budi Santoso", "email" dengan "[email protected]", dan "kota" dengan "Jakarta". Kedua array harus berisi jumlah elemen yang sama; jika tidak, PHP melempar ValueError. Pola ini sangat berguna ketika kunci dan nilai datang dari dua sumber berbeda, misalnya daftar kolom dari skema database dan satu baris data hasil query.
Memecah String dengan explode #
Array juga sering lahir dari string. Fungsi explode() — yang sudah kita kenal pada Chapter Splitting dan Joining
— memecah string menjadi array berdasarkan pemisah:
<?php
$daftarSkill = "PHP,MySQL,HTML,CSS";
$skill = explode(",", $daftarSkill);
print_r($skill);
echo "Skill pertama: " . $skill[0] . "\n";Output yang Dihasilkan:
Array
(
[0] => PHP
[1] => MySQL
[2] => HTML
[3] => CSS
)
Skill pertama: PHPSetiap potongan di antara koma menjadi satu elemen array terindeks: "PHP" di indeks 0, "MySQL" di indeks 1, dan seterusnya. Sumber seperti ini muncul di banyak tempat — baris CSV, tag artikel, daftar email, parameter URL — sehingga explode() adalah jembatan paling sering dilalui antara dunia string dan dunia array.
Kunci Pertama dan Terakhir #
Kadang kita hanya butuh tepi array: elemen pertama untuk ditampilkan, atau elemen terakhir untuk diperiksa. Fungsi array_key_first() dan array_key_last() mengembalikan kunci tepi tersebut tanpa menggerakkan kursor internal array:
<?php
$bulan = [1 => "Januari", 2 => "Februari", 3 => "Maret", 4 => "April"];
$kunciPertama = array_key_first($bulan);
$kunciTerakhir = array_key_last($bulan);
echo "Kunci pertama: $kunciPertama\n";
echo "Kunci terakhir: $kunciTerakhir\n";
echo "Elemen terakhir: " . $bulan[$kunciTerakhir] . "\n";Output yang Dihasilkan:
Kunci pertama: 1
Kunci terakhir: 4
Elemen terakhir: Aprilarray_key_first($bulan) mengembalikan 1 dan array_key_last($bulan) mengembalikan 4 — kunci, bukan nilainya. Nilai terakhir kemudian diambil dengan $bulan[$kunciTerakhir], menghasilkan "April". Pasangan ini aman dipakai pada array apa pun, termasuk yang kuncinya tidak berurutan, karena keduanya membaca struktur array langsung tanpa asumsi penomoran.
Indeks Negatif Bukan Elemen Terakhir #
Di beberapa bahasa pemrograman, $a[-1] adalah cara idiomatik mengambil elemen terakhir. Di PHP, tidak — indeks negatif hanyalah kunci integer biasa, bukan penunjuk dari belakang:
<?php
$buah = ["Apel", "Jeruk", "Mangga"];
// Indeks negatif BUKAN cara mengakses elemen terakhir
$buah[-1] = "Nanas";
echo "Elemen indeks 2: " . $buah[2] . "\n";
echo "Elemen indeks -1: " . $buah[-1] . "\n";
echo "Jumlah elemen: " . count($buah) . "\n";
print_r($buah);Output yang Dihasilkan:
Elemen indeks 2: Mangga
Elemen indeks -1: Nanas
Jumlah elemen: 4
Array
(
[0] => Apel
[1] => Jeruk
[2] => Mangga
[-1] => Nanas
)Bukti-buktinya terlihat jelas pada output. Penugasan $buah[-1] = "Nanas" tidak menimpa elemen terakhir — "Mangga" di indeks 2 tetap utuh — melainkan menambah elemen keempat dengan kunci -1, sehingga count() naik menjadi 4 dan print_r() menampilkan [-1] => Nanas sebagai entri terpisah. Elemen terakhir array tetap diakses lewat $buah[count($buah) - 1] atau $buah[array_key_last($buah)].
Akses Aman dengan Null Coalescing #
Kita sudah melihat dua kali bahwa membaca kunci yang tidak ada memicu warning. Operator null coalescing ?? — yang kita kenal dari Chapter Null Coalescing Operator
— menyelesaikannya dengan satu baris: jika kunci tidak ada, gunakan nilai cadangan:
<?php
$pengaturan = [
"tema" => "gelap",
"font" => null,
];
echo "Tema: " . ($pengaturan["tema"] ?? "terang") . "\n";
echo "Font: " . ($pengaturan["font"] ?? "Arial") . "\n";
echo "Bahasa: " . ($pengaturan["bahasa"] ?? "id") . "\n";Output yang Dihasilkan:
Tema: gelap
Font: Arial
Bahasa: idTiga baris hasil menunjukkan tiga perilaku ??. Kunci "tema" ada dan bernilai "gelap", jadi nilai aslinya yang dipakai. Kunci "font" ada tetapi bernilai null, sehingga ?? menganggapnya kosong dan memakai cadangan "Arial". Kunci "bahasa" sama sekali tidak ada, dan cadangan "id" pun turun tangan — semuanya tanpa satu pun warning. Tanda kurung di sekitar ekspresi ?? wajib agar operator penggabungan string . tidak mengajaknya berebut prioritas.
Berkas contoh.php pada bagian bawah halaman merangkum seluruh contoh di atas dalam satu program utuh yang dapat Anda unduh dan jalankan langsung.
Ringkasan #
Array dapat dibangun dari pola dengan range(), diisi massal dengan array_fill(), dijahit dari dua array dengan array_combine(), dan dipotong dari string dengan explode(). Di sisi akses, array_key_first() dan array_key_last() menunjuk tepi array dengan aman, indeks negatif terbukti hanyalah kunci biasa, dan ?? memberi jalan keluar elegan untuk kunci yang mungkin tidak ada. Dengan array yang bisa dibuat dan dibaca, satu dunia lagi terbuka: mengubah isinya — menambah, memperbarui, dan menghapus elemen — yang menjadi fokus Chapter berikutnya.
Referensi #
- range — Dokumentasi Resmi PHP
- array_combine — Dokumentasi Resmi PHP
- explode — Dokumentasi Resmi PHP
- array_key_last — Dokumentasi Resmi PHP
Berkas Sumber
Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.
contoh.php
Unduh berkas<?php
// Contoh 1: range untuk deret berurutan
$angka = range(1, 5);
print_r($angka);
$abjad = range("a", "e");
echo implode(", ", $abjad) . "\n";
$kelipatan = range(0, 100, 25);
echo implode(" - ", $kelipatan) . "\n";
// Contoh 2: array_fill untuk pengisian massal
$papanSkor = array_fill(0, 3, 0);
print_r($papanSkor);
$label = array_fill(1, 2, "kosong");
echo $label[1] . "\n";
echo $label[2] . "\n";
// Contoh 3: array_combine menggabungkan dua array
$kunci = ["nama", "email", "kota"];
$nilai = ["Budi Santoso", "[email protected]", "Jakarta"];
$pengguna = array_combine($kunci, $nilai);
print_r($pengguna);
// Contoh 4: explode memecah string menjadi array
$daftarSkill = "PHP,MySQL,HTML,CSS";
$skill = explode(",", $daftarSkill);
print_r($skill);
echo "Skill pertama: " . $skill[0] . "\n";
// Contoh 5: kunci pertama dan terakhir
$bulan = [1 => "Januari", 2 => "Februari", 3 => "Maret", 4 => "April"];
$kunciPertama = array_key_first($bulan);
$kunciTerakhir = array_key_last($bulan);
echo "Kunci pertama: $kunciPertama\n";
echo "Kunci terakhir: $kunciTerakhir\n";
echo "Elemen terakhir: " . $bulan[$kunciTerakhir] . "\n";
// Contoh 6: indeks negatif hanyalah kunci biasa
$buah = ["Apel", "Jeruk", "Mangga"];
$buah[-1] = "Nanas";
echo "Elemen indeks 2: " . $buah[2] . "\n";
echo "Elemen indeks -1: " . $buah[-1] . "\n";
echo "Jumlah elemen: " . count($buah) . "\n";
print_r($buah);
// Contoh 7: akses aman dengan null coalescing
$pengaturan = [
"tema" => "gelap",
"font" => null,
];
echo "Tema: " . ($pengaturan["tema"] ?? "terang") . "\n";
echo "Font: " . ($pengaturan["font"] ?? "Arial") . "\n";
echo "Bahasa: " . ($pengaturan["bahasa"] ?? "id") . "\n";