Sering kali kita hanya membutuhkan sebagian dari sebuah array: daftar nama produk tanpa harganya, daftar email dari data pengguna yang bersarang, atau versi array yang kuncinya rapi kembali setelah elemen dihapus. PHP menyediakan function khusus untuk pekerjaan semacam ini. Pada Chapter ini kita membedah array_keys(), array_values(), array_combine(), array_flip(), dan array_column(), lalu menutup dengan penunjuk internal array — mekanisme lawas yang menjelaskan bagaimana PHP “berjalan” di dalam array sebelum era foreach.
Mengambil Semua Kunci dengan array_keys #
array_keys() menerima sebuah array lalu mengembalikan array baru berisi seluruh kunci sumber, baik kunci string maupun integer, dalam urutan aslinya. Function ini adalah jawaban cepat ketika kita perlu mengiterasi atau menampilkan daftar kunci tanpa peduli nilainya:
<?php
$stok = ["apel" => 12, "jeruk" => 8, "mangga" => 12];
$semuaKunci = array_keys($stok);
echo implode(", ", $semuaKunci) . "\n";Output yang Dihasilkan:
apel, jeruk, manggaBaris array_keys($stok) menghasilkan ["apel", "jeruk", "mangga"] — nilai 12, 8, dan 12 sama sekali tidak dibawa. Versi kedua dari function ini menerima parameter nilai pencarian, sehingga hanya kunci yang nilainya cocok yang dikembalikan:
<?php
$stok = ["apel" => 12, "jeruk" => 8, "mangga" => 12];
$kunciStok12 = array_keys($stok, 12);
echo implode(", ", $kunciStok12) . "\n";Output yang Dihasilkan:
apel, manggaPemanggilan array_keys($stok, 12) membandingkan setiap nilai dengan 12 secara longgar (aturan ==), lalu mengumpulkan kunci yang lolos: apel dan mangga. Parameter ketiga opsional dapat diisi true untuk memaksa perbandingan ketat ===, berguna ketika 12 harus dibedakan dari "12".
Menomori Ulang dengan array_values #
array_values() mengembalikan seluruh nilai array sumber dalam array baru dengan kunci integer berurutan mulai dari nol. Kegunaan utamanya adalah merapikan kunci array indexed yang berlubang, misalnya setelah unset() menghapus elemen di tengah:
<?php
$tugas = ["Belajar PHP", "Belajar SQL", "Belajar HTML"];
unset($tugas[1]);
print_r($tugas);
$tugas = array_values($tugas);
print_r($tugas);Output yang Dihasilkan:
Array
(
[0] => Belajar PHP
[2] => Belajar HTML
)
Array
(
[0] => Belajar PHP
[1] => Belajar HTML
)Setelah unset($tugas[1]), kunci array menjadi 0 dan 2 — lubang di tengah tetap ada karena unset() tidak menggeser elemen lain. Pemanggilan array_values($tugas) membangun array baru berisi nilai yang sama tetapi dinomori ulang menjadi 0 dan 1. Karena function ini mengembalikan array baru (bukan mengubah aslinya), hasilnya perlu ditampung kembali ke $tugas seperti pada baris terakhir.
Membangun Array Baru dengan array_combine #
array_combine() menyatukan dua array: array pertama menjadi kunci, array kedua menjadi nilai. Kedua array harus memiliki jumlah elemen yang sama; jika tidak, PHP melempar ValueError:
<?php
$kunci = ["nama", "email"];
$nilai = ["Budi", "[email protected]"];
$pengguna = array_combine($kunci, $nilai);
echo $pengguna["nama"] . " <" . $pengguna["email"] . ">\n";Output yang Dihasilkan:
Budi <[email protected]>Hasil pemanggilan adalah array asosiatif ["nama" => "Budi", "email" => "[email protected]"]. Pola kerja ini kebalikan dari array_keys() + array_values(): array_combine() merakit, sedangkan dua function sebelumnya membongkar.
Menukar Kunci dan Nilai dengan array_flip #
array_flip() membalik arah array: setiap nilai menjadi kunci dan setiap kunci menjadi nilai. Function ini berguna untuk membuat tabel pencarian balik, misalnya mencari nama negara dari kode negaranya:
<?php
$kodeNegara = ["Indonesia" => "id", "Jepang" => "jp"];
$namaDariKode = array_flip($kodeNegara);
echo $namaDariKode["jp"] . "\n";Output yang Dihasilkan:
JepangArray hasil pembalikan berisi ["id" => "Indonesia", "jp" => "Jepang"], sehingga $namaDariKode["jp"] menghasilkan Jepang. Satu konsekuensi penting: nilai asli harus valid menjadi kunci (hanya integer dan string). Nilai bertipe null atau array membuat array_flip() gagal, dan nilai ganda akan saling menimpa mengikuti aturan “yang belakang menang”.
Mengekstrak Kolom dengan array_column #
array_column() adalah senjata utama untuk data terstruktur bersarang — misalnya hasil json_decode() atau baris dari database. Function ini menyusuri array multidimensional lalu mengumpulkan nilai satu kolom yang sama dari setiap barisnya. Parameter ketiga opsional menunjuk kolom yang akan dipakai sebagai kunci hasil:
<?php
$pengguna = [
["id" => 101, "nama" => "Budi", "email" => "[email protected]"],
["id" => 102, "nama" => "Siti", "email" => "[email protected]"],
["id" => 103, "nama" => "Andi", "email" => "[email protected]"],
];
$semuaEmail = array_column($pengguna, "email");
echo implode(", ", $semuaEmail) . "\n";
$namaPerId = array_column($pengguna, "nama", "id");
echo "Pemilik id 102: " . $namaPerId[102] . "\n";Output yang Dihasilkan:
[email protected], [email protected], [email protected]
Pemilik id 102: SitiMari kita bedah pemanggilannya:
array_column($pengguna, "email"): mengambil nilai kunci"email"dari setiap baris, menghasilkan array indexed["[email protected]", "[email protected]", "[email protected]"].array_column($pengguna, "nama", "id"): sama seperti di atas, tetapi kunci hasil diambil dari kolom"id"setiap baris, menghasilkan[101 => "Budi", 102 => "Siti", 103 => "Andi"]— siap dipakai sebagai tabel lookup.
Kombinasi array_column() dengan implode() atau pencarian berbasis kunci menyingkat pekerjaan yang sebaliknya membutuhkan loop foreach manual.
Penunjuk Internal Array — key, current, next #
Setiap array di PHP menyimpan satu penunjuk internal (internal pointer) yang menandai posisi elemen “saat ini”. Function key(), current(), next(), end(), prev(), dan reset() membaca serta menggerakkan penunjuk tersebut. Mekanisme ini adalah warisan era sebelum foreach dan sekarang jarang dipakai, tetapi Anda akan menemuinya di kode lawas:
<?php
$warna = ["merah" => "#FF0000", "hijau" => "#00FF00", "biru" => "#0000FF"];
echo key($warna) . " => " . current($warna) . "\n";
next($warna);
echo key($warna) . " => " . current($warna) . "\n";
end($warna);
echo key($warna) . " => " . current($warna) . "\n";
reset($warna);
echo key($warna) . " => " . current($warna) . "\n";Output yang Dihasilkan:
merah => #FF0000
hijau => #00FF00
biru => #0000FF
merah => #FF0000Penunjuk internal $warna mulai di elemen pertama, sehingga key() mengembalikan merah dan current() mengembalikan #FF0000. Pemanggilan next() menggeser penunjuk maju satu elemen, end() melompat ke elemen terakhir, dan reset() kembali ke elemen pertama. Kode modern memilih foreach yang jauh lebih mudah dibaca — penunjuk internal hanya layak dipakai untuk kasus khusus seperti mengambil elemen pertama array asosiatif.
Ringkasan #
array_keys() dan array_values() membongkar array menjadi daftar kunci dan daftar nilai, array_combine() merakit array dari dua daftar tersebut, dan array_flip() membalik peran kunci dengan nilai. Untuk data bersarang, array_column() mengekstrak satu kolom — pola yang akan terus muncul di chapter pencarian dan filtering. Berbekal kemampuan membedah struktur array, kita siap mengatur urutannya pada chapter berikutnya tentang array sorting.
Referensi #
array_keys()di php.netarray_values()di php.netarray_column()di php.net- Referensi fungsi array di php.net
Berkas Sumber
Berkas pendukung halaman ini dapat diunduh dan dijalankan langsung sesuai penjelasan di atas.
contoh.php
Unduh berkas<?php
/**
* contoh.php — rangkuman Chapter Array Keys dan Values.
* Jalankan: php contoh.php
*/
// 1. array_keys dan array_values.
$stok = ["apel" => 12, "jeruk" => 8, "mangga" => 12];
echo "Kunci: " . implode(", ", array_keys($stok)) . "\n";
echo "Nilai: " . implode(", ", array_values($stok)) . "\n";
// 2. array_combine membuat array baru dari dua array.
$kunci = ["nama", "email", "kota"];
$nilai = ["Budi", "[email protected]", "Depok"];
$pengguna = array_combine($kunci, $nilai);
echo "Pengguna: {$pengguna["nama"]} ({$pengguna["kota"]})\n";
// 3. array_column mengekstrak kolom dari data bersarang.
$tim = [
["id" => 101, "nama" => "Budi", "email" => "[email protected]"],
["id" => 102, "nama" => "Siti", "email" => "[email protected]"],
];
echo "Email tim: " . implode(", ", array_column($tim, "email")) . "\n";
echo "Nama id 101: " . array_column($tim, "nama", "id")[101] . "\n";
// 4. Penomoran ulang setelah unset.
$tugas = ["Belajar PHP", "Belajar SQL", "Belajar HTML"];
unset($tugas[1]);
$tugas = array_values($tugas);
echo "Tugas tersisa: " . implode(" | ", $tugas) . "\n";