Buku Manual & Glosarium PHP 8.3
PHP Playground
1.0G (STABIL)
DOKUMENTASI RESMI & PANDUAN ACUAN • Standar PHP 8.3 & php.net manual

Buku Manual Komputasi & Glosarium Algoritma

Dokumentasi terstruktur fungsi inti PHP 8.3, sintaks kueri basis data SQL, rujukan resmi dokumentasi php.net, serta glosarium istilah komputasi dan analisis asimtotik.

Uji Coba Kode Langsung di Browser (PHP 8.3 Sandbox)
Seluruh fungsi dan contoh algoritma di bawah dapat langsung dieksekusi tanpa instalasi menggunakan playground terintegrasi.
Buka php-play.dev

1. Fungsi Manipulasi Array (PHP)

DATA STRUCTURE
php.net/ref.array
array_filter(array $array, ?callable $callback = null, int $mode = 0): array php.net docs →

Menyaring elemen array berdasarkan kriteria fungsi penentu (callback). Elemen yang mengembalikan true akan dipertahankan. Sangat penting untuk membersihkan data sensor atau data input anomali.

$suhu = [24.5, -5.0, 31.2, 85.0];
// Ambil hanya suhu positif normal (0 < suhu <= 50)
$valid = array_filter($suhu, fn(float $val): bool => $val > 0 && $val <= 50.0);
$hasil = array_values($valid); // Hasil: [24.5, 31.2]
array_map(?callable $callback, array $array, array ...$arrays): array php.net docs →

Mentransformasikan seluruh elemen array dengan mengeksekusi callback pada setiap indeks untuk menghasilkan array baru dengan ukuran yang sama.

$radiasi = [1.256, 4.881, 7.009];
$terkalibrasi = array_map(fn(float $n): float => round($n, 2), $radiasi); 
// Hasil: [1.26, 4.88, 7.01]
array_reduce(array $array, callable $callback, mixed $initial = null): mixed php.net docs →

Mereduksi sekumpulan elemen array menjadi satu nilai tunggal (akumulator), ideal untuk menghitung akumulasi total atau agregasi nilai matriks.

$angka = [10, 20, 30, 40];
$total = array_reduce($angka, fn(int $carry, int $item): int => $carry + $item, 0);
// Hasil: 100
array_values(array $array): array php.net docs →

Menyusun ulang kunci indeks array numerik dari indeks 0 secara berurutan. Sangat krusial setelah menjalankan array_filter agar array tidak berlubang (non-sequential keys).

$acak = [2 => 'Data A', 9 => 'Data B'];
$terurut = array_values($acak); // [0 => 'Data A', 1 => 'Data B']
usort(array &$array, callable $callback): bool php.net docs →

Mengurutkan elemen array di tempat (*in-place*) menggunakan fungsi pembanding kustom. Menggunakan operator spaceship <=> untuk perbandingan ascending/descending.

$personil = [
    ['nama' => 'Kadet A', 'xp' => 450],
    ['nama' => 'Kadet B', 'xp' => 920]
];
// Urutkan descending berdasarkan XP
usort($personil, fn($a, $b) => $b['xp'] <=> $a['xp']);

2. Fungsi Manipulasi String (PHP)

STRING OPS
php.net/ref.strings
str_contains(string $haystack, string $needle): bool php.net docs →

Memeriksa apakah substring $needle terdapat di dalam teks $haystack (peka huruf besar-kecil). Hadir sejak PHP 8.0 menggantikan strpos() !== false.

if (str_contains('SENSOR-PENDINGIN-A1', 'PENDINGIN')) {
    echo "Pola modul pendingin terdeteksi.";
}
str_starts_with(string $haystack, string $needle): bool php.net docs →

Memastikan apakah suatu teks diawali dengan awalan tertentu secara eksak. Pasangannya adalah str_ends_with() untuk memvalidasi akhiran.

$route = '/admin/settings';
if (str_starts_with($route, '/admin')) {
    // Memerlukan hak otorisasi administrator
}
explode(string $separator, string $string): array php.net docs →

Memecah teks menjadi array berdasarkan karakter delimiter pemisah. Kebalikannya adalah implode($separator, $array) yang menggabungkan kembali array menjadi satu teks.

$log = "2026-11-01|REAKTOR|NORMAL";
$parts = explode('|', $log); // ["2026-11-01", "REAKTOR", "NORMAL"]
$joined = implode(' // ', $parts); // "2026-11-01 // REAKTOR // NORMAL"

3. Operasi Matematika & Numerik (PHP)

MATH
php.net/ref.math
round(int|float $num, int $precision = 0): float php.net docs →

Membulatkan angka desimal ke digit presisi di belakang koma. Gunakan floor() untuk pembulatan ke bawah mutlak, dan ceil() untuk pembulatan ke atas mutlak.

echo round(83.33333, 2); // 83.33
echo floor(4.99);        // 4.0
echo ceil(4.01);         // 5.0
echo abs(-42);           // 42 (Nilai mutlak)
intdiv(int $num1, int $num2): int php.net docs →

Melakukan pembagian bilangan bulat (*integer division*) tanpa menghasilkan pecahan desimal. Sangat krusial dalam algoritma **Binary Search** saat menghitung indeks tengah $mid = intdiv($low + $high, 2).

echo intdiv(7, 2); // 3 (bukan 3.5)
echo 7 % 2;        // 1 (sisa bagi modulo)

4. Fitur Modern PHP 8.3 & Engine

PHP 8.3 STANDARD
php.net/migration83
match ($value) { pattern => result, ... } php.net docs →

Pengganti switch modern: melakukan perbandingan identik ketat (===), tidak memerlukan break, dan langsung mengembalikan nilai (*expression*).

$label = match ($role) {
    'admin' => 'Administrator Sistem',
    'editor' => 'Penyusun Soal',
    default => 'Kadet Peserta'
};
json_validate(string $json, int $depth = 512, int $flags = 0): bool php.net docs →

Fitur Baru PHP 8.3: Memvalidasi apakah string berformat JSON valid tanpa perlu mendekompresi dan mengalokasikan pohon memori seperti pada json_decode(). Sangat cepat dan hemat memori untuk API.

if (json_validate($payload)) {
    // String terbukti JSON valid tanpa memboroskan alokasi memori
}
declare(strict_types=1); php.net docs →

Mengaktifkan pemeriksaan tipe data secara ketat. Memaksa compiler menolak konversi otomatis (*implicit coercion*) jika tipe parameter yang dilewatkan tidak sesuai dengan deklarasi tipe fungsi.

declare(strict_types=1);

function tambah(int $a, int $b): int {
    return $a + $b;
}
// tambah('5', 10); -> Melempar TypeError secara instan!

5. Referensi Cepat Sintaks SQL (DQL)

RELATIONAL DQL
GROUP BY ... HAVING vs WHERE Agregasi

Klausul WHERE menyaring baris sebelum dikelompokkan, sedangkan HAVING menyaring hasil fungsi agregat (seperti SUM, COUNT, AVG) setelah pengelompokan GROUP BY.

SELECT nama_sektor, COUNT(id) AS total_unit, ROUND(SUM(daya), 2) AS total_daya
FROM generator
WHERE status = 'ONLINE'
GROUP BY nama_sektor
HAVING total_daya > 250.0
ORDER BY total_daya DESC;

6. Glosarium Istilah Pemrograman & Algoritma

GLOSSARY A-Z
Notasi Big-O (O)

Ukuran asimtotik batas atas yang mendeskripsikan efisiensi waktu eksekusi atau konsumsi memori suatu algoritma saat ukuran input data (N) bertambah menuju tak hingga.

Base Case (Syarat Berhenti)

Kondisi mutlak pada fungsi rekursif yang menghentikan proses pemanggilan diri sendiri dan mengembalikan nilai konstan, mencegah terjadinya Maximum Call Stack Exceeded.

Call Stack Frame

Blok memori terstruktur LIFO (Last-In, First-Out) tempat komputer melacak variabel lokal dan alamat kembali dari setiap pemanggilan fungsi yang sedang berjalan.

Pola Two Pointers

Teknik pemecahan masalah dengan menggunakan dua variabel penunjuk indeks (misalnya di awal dan di akhir array) yang bergerak secara bertahap untuk membalik data atau validasi palindrom dalam waktu O(N).

Sliding Window

Teknik mengelola sub-array bergerak dengan batas jendela dinamis untuk menghitung nilai maksimal atau substring unik tanpa perlu perulangan bersarang kuadratik O(N²).

Binary Search (Pencarian Biner)

Algoritma pencarian elemen pada array terurut dengan membagi interval pencarian menjadi dua bagian di setiap langkah, menghasilkan efisiensi waktu logaritmik O(log N).

AST (Abstract Syntax Tree)

Struktur data pohon hirarki yang mewakili struktur sintaksis kode sumber program. Digunakan oleh sistem sandbox platform untuk mengaudit token kode berbahaya sebelum eksekusi.

Presedensi Operator

Aturan hierarki yang menentukan urutan evaluasi operasi dalam suatu ekspresi. Misalnya perkalian (*) memiliki presedensi lebih tinggi dibanding penjumlahan (+), dan operator tanda kurung () memiliki prioritas tertinggi.

7. Portal Rujukan Resmi php.net Manual

OFFICIAL DOCS

Pemberitahuan