Kadang kita ingin menyimpan data sederhana tanpa harus repot setup MySQL atau PostgreSQL. Salah satu alternatif ringan adalah menggunakan file JSON sebagai “database”. JSON mudah dibaca, fleksibel, dan PHP sudah punya fungsi bawaan untuk mengolahnya.
Di artikel ini, kita akan coba dua pendekatan:
- Query manual dengan
foreach+preg_match. - Menggunakan library JsonQ supaya query terasa mirip SQL.
A. Query JSON secara manual di PHP
Misalkan kita punya file data.json seperti ini:
[
{ "id": 1, "kode": "DGS123", "nama": "Edy" },
{ "id": 2, "kode": "SPI2025", "nama": "Santoso" },
{ "id": 3, "kode": "ABC999", "nama": "Guest" }
]
1. Membaca file JSON
<?php
$json = file_get_contents("data.json");
$data = json_decode($json, true); // true agar jadi array asosiatif
2. “Query” dengan loop (foreach)
Misalnya kita mau ambil semua data, lalu menyusun array baru:
$result = [];
foreach ($data as $row) {
$result[] = [
"ID" => $row["id"],
"Kode" => $row["kode"],
"Nama" => $row["nama"]
];
}
print_r($result);
Outputnya berupa array baru:
Array
(
[0] => Array ( [ID] => 1 [Kode] => DGS123 [Nama] => Edy )
[1] => Array ( [ID] => 2 [Kode] => SPI2025 [Nama] => Santoso )
[2] => Array ( [ID] => 3 [Kode] => ABC999 [Nama] => Guest )
)
3. “Where” dengan preg_match
Seperti contoh regex sebelumnya, kita bisa filter hanya yang kode diawali DGS atau SPI:
$filtered = [];
foreach ($data as $row) {
if (preg_match('/^(DGS|SPI)/', $row['kode'])) {
$filtered[] = $row;
}
}
print_r($filtered);
Hasilnya:
Array
(
[0] => Array ( [id] => 1 [kode] => DGS123 [nama] => Edy )
[1] => Array ( [id] => 2 [kode] => SPI2025 [nama] => Santoso )
)
Dengan cara ini, kita bisa meniru SELECT ... WHERE sederhana hanya dengan PHP bawaan.
B. Query JSON dengan Library JsonQ
Kalau ingin lebih rapi, kita bisa menggunakan JsonQ, yaitu library kecil yang memungkinkan kita query JSON mirip database.
1. Instalasi JsonQ
Jika menggunakan Composer, jalankan:
composer require nahid/jsonq
2. Contoh penggunaan
<?php
require 'vendor/autoload.php';
use Nahid\JsonQ\Jsonq;
$j = new Jsonq('data.json');
// Ambil semua data
$all = $j->get();
print_r($all);
// Query dengan where
$result = $j->from('.')
->where('kode', 'regex', '/^(DGS|SPI)/')
->get();
print_r($result);
3. Hasil query dengan where
Array
(
[0] => Array ( [id] => 1 [kode] => DGS123 [nama] => Edy )
[1] => Array ( [id] => 2 [kode] => SPI2025 [nama] => Santoso )
)
Kesimpulan
- Kalau hanya butuh filter sederhana, cukup gunakan
foreach+preg_match. - Kalau data makin kompleks dan query banyak, lebih enak pakai library seperti JsonQ agar kodenya rapi dan mudah dibaca.
Dengan dua pendekatan ini, kamu bisa pakai JSON sebagai database mini tanpa harus install DBMS berat. Cocok untuk aplikasi kecil, prototyping, atau belajar dasar query data di PHP.

