Array di PHP — PHP

PHP punya dua jenis array: indexed dan associative. Indexed array (seperti list): $buah = ["Apel", "Mangga", "Jeruk"]; echo $buah[0]; // "Apel" echo $buah[2]…

Array adalah satu variabel yang menyimpan banyak nilai sekaligus. Bayangin buku Bu Tini. Satu halaman berisi daftar pesanan hari ini, bernomor sesuai urutan datang: itu indexed array. Halaman lain berisi papan menu, nama menu di kiri dan harganya di kanan: itu associative array. Daripada membuat $pesanan1, $pesanan2, $pesanan3, kamu cukup punya satu $pesanan.

🧪 Tebakan cepat: $pesanan berisi 3 pesanan. Pesanan terakhir diambil dengan $pesanan[3]? Tebak dulu, jawabannya ada di bagian "Indexed array: nomornya mulai dari 0".

Indexed array: nomornya mulai dari 0

<?php
$pesanan = ["Nasi Goreng", "Mie Ayam", "Es Teh"];

echo $pesanan[0] . "\n";
echo count($pesanan) . "\n";
echo $pesanan[count($pesanan) - 1] . "\n";
Nasi Goreng
3
Es Teh
Indeks [0] [1] [2]
Isi Nasi Goreng Mie Ayam Es Teh

Menambah dan mengubah isi

<?php
$pesanan = ["Nasi Goreng", "Mie Ayam", "Es Teh"];

$pesanan[] = "Kerupuk";
$pesanan[1] = "Bakso";
array_push($pesanan, "Teh Tarik");

echo count($pesanan);
5

Associative array: nama sebagai kunci

<?php
$harga = [
    "Nasi Goreng" => 15000,
    "Mie Ayam" => 12000,
    "Es Teh" => 5000,
];

echo $harga["Es Teh"] . "\n";

$harga["Kerupuk"] = 2000;
echo count($harga);
5000
4

Melihat isi: print_r dan var_dump

echo gak bisa menulis array: echo $pesanan; memberi Warning: Array to string conversion lalu kata Array. Untuk melihat isinya:

print_r($harga);
Array
(
    [Nasi Goreng] => 15000
    [Mie Ayam] => 12000
    [Es Teh] => 5000
    [Kerupuk] => 2000
)

foreach: satu per satu

foreach ($harga as $menu => $h) {
    echo "$menu: Rp$h\n";
}
Nasi Goreng: Rp15000
Mie Ayam: Rp12000
Es Teh: Rp5000
Kerupuk: Rp2000

foreach menjalankan isi kurung kurawalnya sekali untuk tiap isi array: $menu berisi kuncinya, $h nilainya. Untuk indexed array cukup foreach ($pesanan as $p). Loop dibahas lengkap di lesson Loop.

🤔 Kunci "1" jadi 1

$meja = ["1" => "Budi", 1 => "Sari"];
echo count($meja); // 1

String yang isinya bilangan bulat biasa, seperti "1", dipakai PHP sebagai kunci int. Jadi dua kunci di atas sama-sama 1, dan "Sari" menimpa "Budi". "01" tetap kunci string karena ada 0 di depannya, dan true jadi kunci 1.

🤔 Mengubah isi di dalam foreach

$harga = [15000, 12000, 5000];

foreach ($harga as $h) {
    $h = $h + 1000;      // salinan, $harga gak berubah
}

foreach ($harga as $i => $h) {
    $harga[$i] = $h + 1000; // [16000, 13000, 6000]
}

⚠️ Jebakan yang sering ketemu

TL;DR: Indexed array ["Nasi Goreng", "Mie Ayam", "Es Teh"] diberi nomor mulai dari 0, jadi isi pertama $arr[0] dan isi terakhir $arr[count($arr) - 1]. count() menghitung isinya, $arr[] = ... menambah di ujung. Associative array memasangkan kunci dengan nilai lewat => dan diambil lewat kuncinya, $harga["Es Teh"]. echo gak bisa menulis array, pakai print_r atau var_dump. Di foreach, $h cuma salinan: ubah lewat $arr[$i], atau kalau pakai &$h, unset($h) sesudahnya.

Yang akan kamu pelajari