Belajar PHP - Arrays & String
Episode 6 of 23

Belajar PHP - Arrays & String

Membongkar dua tipe kerja sehari-hari di PHP: array indexed & associative dengan array_map/filter/reduce dan destructuring, lalu string dengan interpolation, heredoc, dan fungsi penting seperti str_contains dan mb_strlen untuk penanganan teks UTF-8 yang benar di aplikasi nyata.

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Jika ada dua hal yang akan kalian temui di hampir setiap baris kode PHP, itu adalah array dan string. PHP dikenal sebagai bahasa yang "array-centric": hampir semua struktur data — request, response, konfigurasi, hasil database — datang dalam bentuk array. Sedangkan string adalah medium komunikasi dengan pengguna: HTML, JSON, log, dan pesan.

Episode ini membuat kalian mahir mengolah keduanya. Di sini kalian belajar transformasi data ala fungsional (map/filter/reduce), cara kerja destructuring yang ringkas, dan kebiasaan string yang aman untuk UTF-8 — fondasi untuk episode 11 (database), 13 (REST API), dan 17 (keamanan).

Array Indexed dan Associative

PHP array adalah ordered map — bisa dipakai sebagai list (indexed) atau dictionary (associative) sekaligus:

Indexed vs associative
<?php
declare(strict_types=1);
 
$daftar = ["php", "laravel", "mysql"];          // indexed
$profil = [
    "nama" => "Devvnull",
    "role" => "admin",
    "aktif" => true,
];                                                 // associative
 
echo $daftar[0], "\n";        // php
echo $profil["nama"], "\n";   // Devvnull

Karena map, PHP menjaga urutan elemen — properti yang membuat array cocok sebagai struktur data umum. count($array) menghitung jumlah elemen; array_keys() dan array_values() memisahkan key dan nilai.

Transformasi Data: map, filter, reduce

Tiga fungsi "bread and butter" untuk mengolah koleksi:

array_map, array_filter, array_reduce
$harga = [10000, 25000, 3000, 50000];
 
$sudahPajak = array_map(
    fn (int $h): int => $h + (int) ($h * 0.11),
    $harga
);
 
$murah = array_filter(
    $harga,
    fn (int $h): bool => $h <= 15000
);
 
$total = array_reduce(
    $harga,
    fn (int $carry, int $h): int => $carry + $h,
    0
);
 
print_r($sudahPajak);
print_r($murah);
echo "Total: $total\n";

Ingat tiga pola:

FungsiPolaKembali
array_mapsetiap elemen → elemen baruarray berukuran sama
array_filterelemen lolos kondisiarray menyusut
array_reduceakumulasi semua elemensatu nilai

Fungsi lain yang sering dipakai: array_merge, array_combine, array_unique, sort/usort, array_search, dan in_array.

Destructuring dan Spread

PHP mendukung destructuring array dengan sintaks pendek [...]:

Destructuring array
[$nama, $role] = ["Devvnull", "admin"];
 
$profil = ["nama" => "Devvnull", "role" => "admin"];
["nama" => $n, "role" => $r] = $profil;
 
echo "$nama / $role\n";
echo "$n / $r\n";

Spread operator ... menggabungkan array atau melempar ke variadic (episode 5):

Spread array
$awal = [1, 2];
$akhir = [3, 4];
$gabung = [...$awal, ...$akhir];   // [1, 2, 3, 4]

Destructuring sangat praktis saat mengambil beberapa baris dari hasil query database (episode 11) atau response API (episode 13).

Warning

Jangan gunakan array_map untuk iterasi dengan efek samping (seperti mencetak). Untuk itu gunakan foreach biasa — array_map harus murni transformasi data. Penyalahgunaan ini membuat kode sulit dibaca dan error sulit ditelusuri.

String

Interpolation vs Concatenation

String double-quoted melakukan interpolation variabel:

Interpolation
$nama = "Devvnull";
$versi = "8.5";
 
echo "Halo $nama, kita pakai PHP $versi\n";
echo 'Halo $nama, PHP literal $versi\n';   // single-quote: literal
echo $nama . " versi " . $versi . "\n";    // concatenation

Dalam double-quote, gunakan kurung kurawal bila perlu memisahkan variabel dari teks berikutnya: "{$nama}s" menghasilkan Devvnuls. Ingat: di luar kode blok, kurung kurawal harus dibungkus backtick agar tidak dianggap JSX/MDX.

Heredoc dan Nowdoc

Untuk teks panjang, heredoc (<<<EOT) memungkinkan interpolation, nowdoc (<<<'EOT') tidak:

Heredoc dan nowdoc
$nama = "Devvnull";
 
$intro = <<<TXT
Halo $nama,
Selamat datang di series Belajar PHP.
TXT;
 
$literal = <<<'TXT'
Halo $nama — baris ini tidak diinterpolasi.
TXT;
 
echo $intro, "\n", $literal, "\n";

Heredoc sangat berguna untuk membangun body email, SQL, atau template multi-baris.

Fungsi String yang Wajib Dikuasai

Fungsi string modern
$kalimat = "Belajar PHP itu menyenangkan";
 
var_dump(str_contains($kalimat, "PHP"));       // true  (PHP 8+)
var_dump(str_starts_with($kalimat, "Belajar")); // true
var_dump(str_ends_with($kalimat, "kan"));       // true
echo str_replace("PHP", "Go", $kalimat), "\n";
echo strtoupper($kalimat), "\n";
echo substr($kalimat, 0, 10), "\n";            // Belajar PH

str_contains (PHP 8.0+) menggantikan pola strpos() !== false yang mudah salah.

UTF-8: Jangan Pakai Fungsi "Biasa" untuk Teks Multibyte

Fungsi seperti strlen, substr, dan strtolower menghitung per byte, bukan per karakter. Untuk bahasa Indonesia (plus emoji dan aksara lain), selalu gunakan varian mb_*:

Byte vs karakter UTF-8
$teks = "Sate Ayam 🍢";
 
echo strlen($teks), "\n";       // jumlah byte (lebih besar)
echo mb_strlen($teks), "\n";    // 10 karakter
echo mb_substr($teks, 0, 4), "\n";  // "Sate"
echo mb_strtoupper("naik", "UTF-8"), "\n";  // "NAIK"

Fungsi mb_* membutuhkan ekstensi mbstring (sudah kita verifikasi di episode 0). Aturan praktis: jika data berasal dari user atau database, anggap UTF-8 dan gunakan mb_*.

Common Pitfalls

  • String numeric + == — gunakan === atau (int) untuk membandingkan dengan angka.
  • array_map dengan multi-array — kunci berubah jadi numeric; periksa dokumentasi bila argumen lebih dari satu array.
  • substr memotong di tengah karakter multibyte — hasilkan teks rusak; pakai mb_substr.
  • Lupa kunci string di json_encode — array indexed jadi array JSON, associative jadi object; ini penting di episode 13.

Penutup

Inti yang harus dibawa pulang:

  • PHP array adalah ordered map: indexed untuk list, associative untuk record.
  • Kuasai array_map/array_filter/array_reduce sebagai pola transformasi standar.
  • Gunakan destructuring [...] dan spread untuk kode yang ringkas.
  • String: interpolation untuk double-quote, str_contains untuk pencarian, dan mb_* untuk teks UTF-8.

Di episode 7 selanjutnya kita masuk paradigma Object-Oriented Programmingclass, visibility, constructor property promotion, readonly, lalu inheritance, interface, abstract class, trait, dan enum. Ini gerbang menuju kode PHP yang terstruktur dan siap untuk framework seperti Laravel.

Belajar PHP - Arrays & String | Belajar PHP