Kodealgo

Array PHP

Array merupakan salah satu tipe data compound di PHP dimana setiap elemennya adalah sepasang kunci dan nilai. Nilai dapat berupa tipe data apa pun termasuk tipe scalar seperti angka, string, boolean dan sebagainya, atau bahkan array lain.

Tipe data yang satu ini akan sering kita gunakan saat menulis kode PHP terutama saat kita bekerja dengan database, karena biasanya data dari database direpresentasikan sebagai array.

Oleh karena itu penting untuk mengetahui cara kerja array secara detail sehingga kita dapat menggunakannya dalam kondisi yang tepat.

Berikut beberapa topik terkait array PHP yang akan kita bahas.

  1. Cara Membuat Array
    1. Array Numerik
    2. Array Asosiatif
  2. Array Multidimensi
  3. Tambah Elemen Array
    1. array_unshift() - Tambah Elemen ke Awal
    2. array_push() - Tambah Elemen ke Akhir
  4. Ubah Elemen Array
  5. Hapus Elemen Array
    1. array_shift() - Hapus Elemen Pertama
    2. array_pop() - Hapus Elemen Terakhir
  6. Filter Elemen Array
  7. Hitung Jumlah Elemen Array

Cara Membuat Array

Untuk membuat array di PHP kita bisa menggunakan sintaks array(elemen1, elemen2, elemenN) atau sintaks singkat [elemen1, elemen2, elemenN] entah itu array numerik maupun asosiatif.

Kita bisa mengelompokkan array ke dalam dua kategori yaitu array numerik dan asosiatif, pengelompokkan ini biasanya digunakan dalam pendidikan formal.

Mari kita pelajari satu per satu.

Array Numerik

Array numerik atau terindeks adalah array yang memiliki elemen dimana setiap elemen memiliki kunci berupa angka berurutan, elemen pertama memiliki indeks 0, elemen kedua memiliki indeks 1 dan seterusnya.

Indeks diberikan secara otomatis oleh PHP, berbeda dengan array asosiatif dimana kunci elemen array bisa kita namai sesuai dengan keinginan.

Setiap elemen harus dipisahkan dengan koma (kecuali koma setelah elemen terakhir), dan semua elemen harus berada di dalam kurung siku ([]).

Sintaks

[elemen1, elemen2, elemen3, elemenN]

Contoh berikut kami membuat array numerik yang berisi nama-nama binatang untuk variabel atau array $binatang:

<?php

$binatang = [
  'kucing',
  'ayam',
  'bebek',
];

Sekarang, saat kita menulis kode PHP untuk sebuah projek, kita terkadang perlu memanipulasi elemen tertentu di dalam array entah itu untuk mengubah, menambah, maupun menghapus.

Bagaimana kita melakukannya? tentu harus ada cara bagi kita untuk mengakses elemen spesifik dalam array.

Nah disinilah fungsi dari kunci elemen, karena kunci array numerik diberikan secara otomatis oleh PHP, dimana kunci untuk elemen pertama adalah 0, elemen kedua 1, dan seterusnya, kita bisa menggunakan kunci ini untuk mengakses elemen tertentu dalam array.

Kunci elemen array yang dimulai dari 0 dan diberikan secara otomatis biasanya disebut indeks. Sepasang kunci dan nilai biasanya disebut sebagai item atau elemen.

Sintaks untuk mengakses elemen array adalah: $namaArray[indeks].

Mari kita coba, misalnya di sini kita ingin mengakses elemen ayam di dalam variabel atau array $binatang.

<?php

$binatang = [
  'kucing',
  'ayam',
  'bebek',
];

var_dump($binatang[1]); // string(4) "ayam"

Semua kunci dan nilai array bisa kita lihat menggunakan fungsi var_dump(), contoh:

<?php

$binatang = [
  'kucing',
  'ayam',
  'bebek',
];

var_dump($binatang);
// array(3) {
//   [0]=>
//   string(6) "kucing"
//   [1]=>
//   string(4) "ayam"
//   [2]=>
//   string(5) "bebek"
// }

Untuk membaca hasil dari fungsi var_dump() dalam contoh kode di atas:

  • array(3) - tipe data variabel $binatang dalam hal ini array, angka tiga ((3)) adalah panjang array.
  • [0], [1], [2] - angka di dalam kurung siku sebelum tanda => adalah indeks atau kunci untuk nilai yang berada di sebelah kanannya, misalnya nilai dari kunci [2] adalah bebek, nilai tersebut bertipe string dan memiliki panjang 5 (jumlah karakter).
  • string(6) "kucing", string(4) "ayam", string(5) "bebek" - nilai untuk masing-masing kunci seperti yang sudah dijelaskan sebelumnya.

Array Asosiatif

Array asosiatif adalah array dimana setiap kunci elemennya diberi nama, dibuat secara manual, tidak diberikan secara otomatis seperti array numerik, nama kunci biasanya berupa string.

Sintaks

[
  'namaKunciA' => 'nilaiA',
  'namaKunciB' => 'nilaiB',
  'namaKunciC' => 'nilaiC',
  'namaKunciN' => 'nilaiN'
]

Contoh:

<?php

$budi = [
  'nama' => 'Budi Suradi',
  'umur' => 28,
  'jenisKelamin' => 'Pria',
  'pendidikan' => 'Karyawan Swasta'
];

Sekarang ketika kita ingin mengakses nilai spesifik, alih-alih menggunakan indeks atau kunci angka seperti array numerik, kita bisa menggunakn nama kunci yang sesuai, bukan lagi angka seperti array numerik.

Untuk mengakses nilai tertentu di dalam array asosiatif, berikut sintaksnya: $namaArray['namaKunci'].

Misalnya, kita ingin mendapatkan nilai umur dari array $budi, maka kita bisa menulis $budi['umur']:

<?php

$budi = [
  'nama' => 'Budi Suradi',
  'umur' => 28,
  'jenisKelamin' => 'Pria',
  'pendidikan' => 'Karyawan Swasta'
];

$umurBudi = $budi['umur'];

var_dump($umurBudi); // int(28)

Array Multidimensi

Array multidimensi adalah array di dalam array, kita bisa membuatnya menggunakan array numerik, asosiatif, maupun campuran dari keduanya.

Maksud dari multidimensi adalah kedalaman dari array, semua contoh array yang kita pelajari di atas hanya memiliki satu lapis atau kedalam array.

Mari kita lihat contoh array multidimensi $numbers berikut:

<?php

$numbers = [
  [1, 2, 3],
  [4, 5, 6],
  [7, 8, 9]
];

Contoh di atas disebut array multi dimensi karena ada array di dalam array.

Pertanyaannya, bagaimana kita mengakses elemen spesifik di dalam array multi dimensi, misalnya angka 5 dalam array $numbers di atas, sebetulnya sama saja seperti yang sudah dijelaskan sebelumnya.

Untuk mengakses nilai 5 di dalam array $numbers adalah: $numbers[1][1]

Mari kita jelaskan, $numbers[1] berarti kita mengakses elemen indeks ke 1 di dalam array $numbers yaitu [4, 5, 6].

Untuk mengakses nilai 5 tidak cukup sampai disini ([4, 5, 6]) karena itu hanya mengakses array yang mengandung angka 5, kita perlu menulis lagi indeks untuk angka 5 dalam hal ini indeksnya adalah 1, maka hasilnya $numbers[1][1].

Diatas kita hanya menggunakan array numerik, bagaimana kalau multidimensi campuran, misalnya diberikan array berikut:

$students = [
  [
    'nama' => 'budi',
    'umur' => 26
  ],
  [
    'nama' => 'bambang',
    'umur' => 17
  ],
  [
    'nama' => 'ucup',
    'umur' => 20
  ]
];

Bagaimana kita mengakses nilai untuk umur bambang?

Sama seperti array numerik multi dimensi, hanya saja sekarang kuncinya menggunakan nama. Jadi, untuk mengakses nilai dari umur bambang adalah $students[1]['umur'].

Di bawah kita akan belajar cara memanipulasi array seperti menambah, mengubah, menghapus elemen array dan sebagainya, metode-metode tersebut dapat digunakan pada array numerik maupun asosiatif.

Tambah Elemen Array

Terkadang kita perlu menambahkan elemen baru ke dalam array, untuk melakukan hal ini kita bisa menggunakan fungsi array_unshift untuk menambahkan elemen ke awal array atau array_push ke akhir.

array_unshift() - Tambah Elemen ke Awal

array_unshift() adalah fungsi bawaan PHP yang berfungsi untuk menambahkan satu atau lebih elemen ke awal array.

Sintaks

array_unshift(array $array, mixed ...$nilai): int

Parameter

  • $array - array yang ingin ditambah elemen baru.
  • $nilai - nilai yang ingin ditambahkan ke array, jika nilai lebih dari satu dipisahkan dengan koma.

Nilai Kembalian

Mengembalikan jumlah elemen baru dalam array. Biasanya tidak digunakan.

Contoh

Kami memiliki array $binatang, ingin menambahkan binatang baru angsa dan kuda ke awal array.

<?php

$binatang = [
  'kucing',
  'ayam'
];

$panjangBinatang = array_unshift($binatang, 'angsa', 'kuda');

var_dump($panjangBinatang); // int(4)

var_dump($binatang);
// array(4) {
//   [0]=>
//   string(5) "angsa"
//   [1]=>
//   string(4) "kuda"
//   [2]=>
//   string(6) "kucing"
//   [3]=>
//   string(4) "ayam"
// }

array_push() - Tambah Elemen ke Akhir

array_push() berfungsi untuk menambahkan satu atau lebih elemen ke akhir array.

Sintaks

array_push(array $array, mixed ...$nilai): int

Parameter

  • $array - array yang ingin ditambah elemen.
  • $nilai - nilai yang ditambahkan ke akhir array.

Nilai Kembalian

Mengembalikan jumlah elemen baru dalam array.

Contoh

Kami memiliki array $binatang, ingin menambahkan binatang baru angsa dan kuda ke akhir array.

$binatang = [
  'kucing',
  'ayam'
];

$panjangBinatang = array_push($binatang, 'angsa', 'kuda');

var_dump($panjangBinatang); // int(4)

var_dump($binatang);
// array(4) {
//   [0]=>
//   string(6) "kucing"
//   [1]=>
//   string(4) "ayam"
//   [2]=>
//   string(5) "angsa"
//   [3]=>
//   string(4) "kuda"
// }

Ubah Elemen Array

Untuk mengubah nilai dari elemen array, kita bisa menggunakan kunci indeks untuk array numerik atau nama kunci untuk array asosiatif.

Metode ini sebetulnya juga bisa digunakan untuk menambahkan elemen ke array, yang perlu diperhatikan jika menggunakan metode ini, saat kita menambahkan elemen ke akhir array, kita perlu mengetahui indeks terakhir +1 agar tidak menimpa elemen yang ada.

Sama halanya ketika menambahkan elemen ke array asosiatif, kita juga perlu menggunakan kunci yang tidak ada di dalam array agar tidak menimpa atau mengubah elemen yang ada.

Sintaks

$array['kunci'] = nilaiBaru;

Contoh berikut kami ingin mengubah nilai dari umur budi dari 20 menjadi 26.

$budi = [
  'nama' => 'budi',
  'umur' => 20
];

$budi['umur'] = 26;

var_dump($budi);
// array(2) {
//   ["nama"]=>
//   string(4) "budi"
//   ["umur"]=>
//   int(26)
// }

Hapus Elemen Array

Selain menambah dan menghapus, terkadang kita juga perlu menghapus elemen tertentu di dalam array. Hal ini bisa dilakukan menggunakan fungsi bawaan PHP yaitu array_shift() untuk menghapus elemen pertama (awal) dan array_pop() untuk elemen terakhir.

array_shift() - Hapus Elemen Pertama

array_shift() berfungsi untuk menggeser elemen satu indeks ke awal array atau menghapus elemen terakhir array, fungsi ini mengembalikan elemen yang dihapus.

Sintaks

array_shift(array $array): mixed

Parameter

  • array - array yang ingin dihapus elemen pertamanya.

Nilai Kembalian

Mengembalikan nilai yang dihapus.

Contoh

Contoh berikut kami menghapus elemen terakhir dari array $budi yaitu 'nama' => 'budi'.

<?php

$budi = [
  'nama' => 'budi',
  'umur' => 20
];

$elemenDihapus = array_shift($budi);

var_dump($elemenDihapus); // string(4) "budi"

var_dump($budi);
// array(1) {
//   ["umur"]=>
//   int(20)
// }

array_pop() - Hapus Elemen Terakhir

array_pop() berfungsi untuk menggeser elemen array ke bagian akhir atau menghapus elemen terakhir array, fungsi ini mengembalikan nilai yang dihapus.

Mirip seperti array_shift(), alih-alih menghapus elemen pertama, array_pop() menghapus elemen terakhir.

Sintaks

array_pop(array $array): mixed

Parameter

  • array - array yang ingin dihapus elemen terakhirnya.

Nilai Kembalian

Mengembalikan elemen yang dihapus.

Contoh

<?php

$burung = [
  'kenari',
  'murai',
  'kutilang'
];

$elemenDihapus = array_pop($burung);

var_dump($elemenDihapus); // string(8) "kutilang"

var_dump($burung);
// array(2) {
//   [0]=>
//   string(6) "kenari"
//   [1]=>
//   string(5) "murai"
// }

Filter Elemen Array

Melakukan penyaringan data seringkali diperlukan saat kita bekerja dengan array, terkadang kita hanya ingin array berisi nilai tertentu. Untuk melakukan hal ini, kita bisa menggunakan fungsi array_filter().

Sintaks

array_filter(array $array, ?callable $callback = null, int $mode = 0): array

Parameter

  • array - array yang ingin difilter.
  • callback (opsional, default null) - callback adalah fungsi yang akan dieksekusi untuk setiap elemen array, harus mengembalikan true jika pemfilteran sesuai kriteria atau false jika tida. Jika tidak ada callback, maka semua elemen kosong atau null akan dihapus.
  • mode (opsional, default 0) - mode menentukan nilai yang akan diberikan ke argumen callback, mode dapat berupa salah satu dari berikut:
    • 0 - nilai array akan diberikan sebagai argumen callback.
    • 1 atau ARRAY_FILTER_USE_KEY - kunci array akan diberikan sebagai argumen callback.
    • 2 atau ARRAY_FILTER_USE_BOTH - kunci dan nilai array akan diberikan sebagai argumen callback.

Nilai Kembalian

Mengembalikan array yang berisi elemen yang jika diuji menggunakan fungsi callback mengembalikan nilai true.

Contoh

Contoh dibawah kami memiliki array $mahasiswa, kami ingin menyaring mahasiswa yang lulus, mahasiswa dikatakan lulus jika nilainya lebih dari atau sama dengan (>=) 80.

<?php

$mahasiswa = [
  ['nama' => 'Angga', 'nilai' => 75],
  ['nama' => 'budi', 'nilai' => 80],
  ['nama' => 'Renova', 'nilai' => 78],
  ['nama' => 'Reza', 'nilai' => 85],
];

$mahasiswaLulus = array_filter($mahasiswa, function($mahasiswa) {
  return $mahasiswa['nilai'] >= 80;
});

var_dump($mahasiswaLulus);
// array(2) {
//   [1]=>
//   array(2) {
//     ["nama"]=>
//     string(4) "budi"
//     ["nilai"]=>
//     int(80)
//   }
//   [3]=>
//   array(2) {
//     ["nama"]=>
//     string(4) "Reza"
//     ["nilai"]=>
//     int(85)
//   }
// }

Perhatikan conoh diatas, untuk fungsi calback kami menggunakan fungsi tanpa nama (anonymous function), tapi sebetulnya kita juga bisa menggunakan fungsi yang sudah dideklarasikan sebelumnya.

Contoh berikut setara dengan contoh kode diatas, hanya saja disini kita menggunakan fungsi yang telah dideklarasikan sebelumnya (lihat fungsi cekLulus).

<?php

$mahasiswa = [
  ['nama' => 'Angga', 'nilai' => 75],
  ['nama' => 'budi', 'nilai' => 80],
  ['nama' => 'Renova', 'nilai' => 78],
  ['nama' => 'Reza', 'nilai' => 85],
];

function cekLulus($mahasiswa) {
  return $mahasiswa['nilai'] >= 80;
};

$mahasiswaLulus = array_filter($mahasiswa, 'cekLulus');

var_dump($mahasiswaLulus);
// array(2) {
//   [1]=>
//   array(2) {
//     ["nama"]=>
//     string(4) "budi"
//     ["nilai"]=>
//     int(80)
//   }
//   [3]=>
//   array(2) {
//     ["nama"]=>
//     string(4) "Reza"
//     ["nilai"]=>
//     int(85)
//   }
// }

Hitung Jumlah Elemen Array

Terkadang kita juga ingin mengetahui seberapa banyak elemen di dalam sebuah array, ini biasanya dibutuhkan ketika kita menggunakan perulangan for mentah yang merayapi setiap elemen array menggunakan indeks.

Untuk menghitung jumlah elemen array, kita bisa menggunakan fungsi count().

Sintaks

count(Countable|array $nilai, int $mode = COUNT_NORMAL): int

Parameter

  • nilai - dapat berupa array atau objek yang mengimplementasikan interface Countable.
  • mode (opsional, default COUNT_NORMAL atau 0) - mode menentukan bagaimana array harus dihitung, dapat berupa salah satu nilai berikut:
    • 0 atau COUNT_NORMAL - hanya menghitung elemen di lapisan pertama array.
    • 1 atau COUNT_RECURSIVE - menghitung elemen di semua lapisan array, cocok untuk array multi dimensi, ini akan menghitung semua elemen termasuk elemen di lapis terdalam.

Contoh

Contoh berikut kita memiliki array $mahasiswa, kita ingin menghitung ada berapa mahasiswa yang ada di dalam array tersebut.

<?php

$mahasiswa = [
  ['nama' => 'Angga', 'nilai' => 75],
  ['nama' => 'budi', 'nilai' => 80],
  ['nama' => 'Renova', 'nilai' => 78],
  ['nama' => 'Reza', 'nilai' => 85],
];

$jumlahMahasiswa = count($mahasiswa);

var_dump($jumlahMahasiswa); // int(4)

Jika kita menggunakan mode COUNT_RECURSIVE (count($mahasiswa, COUNT_RECURSIVE)) hasilnya menjadi int(12) karena elemen array yang berada di dalam array dihitung.