Kodealgo

array_map PHP

array_map merupakan fungsi bawaan PHP yang dapat digunakan untuk memetakan setiap elemen array, fungsi ini biasanya digunakan untuk memodifikasi setiap elemen array sesuai dengan fungsi callback yang diberikan.

Memodifikasi setiap elemen array sebetulnya bisa dilakukan dengan perulangan for, tapi dengan menggunakan array_map kode yang kita tulis bisa lebih singkat.

Berikut beberapa topik yang akan kita bahas terkait fungsi array_map di PHP.

  1. Sintaks
  2. Contoh
    1. Menjumlahkan Setiap Elemen Array Angka
    2. Menambahkan Array Baru ke Array Multidimensi
    3. array_map dengan Fungsi Lambda

Sintaks

array_map mengembalikan array yang dimana setiap elemennya adalah hasil dari penerapan fungsi callback.

array_map(?callable $callback, array $array, array ...$arrays): array

Parameter

  • callback - callable atau fungsi yang akan dijalankan untuk setiap elemen array. Dapat berupa niali null untuk melakukan operasi zip pada beberapa array.
  • array - array sumber yang dimana setiap elemennya akan diteruskan ke fungsi callback.
  • arrays - array yang berisi variabel tambahan yang akan diteruskan ke fungsi callback.

Nilai Kembalian

Mengembalikan array yang dimana setiap elemennya adalah hasil penerapan fungsi callback.

Contoh

Menjumlahkan Setiap Elemen Array Angka

Misalnya kita memiliki array angka bernama $numbers, kita ingin membuat array baru yang dimana setiap elemennya dijumlahkan dengan 1.

$numbers = [1, 2, 3, 4, 5];

$numbersPlusOne = array_map(function ($number) {
  return $number + 1;
}, $numbers);

var_dump($numbersPlusOne);
// array(5) {
//   [0]=>
//   int(2)
//   [1]=>
//   int(3)
//   [2]=>
//   int(4)
//   [3]=>
//   int(5)
//   [4]=>
//   int(6)
// }

Menambahkan Array Baru ke Array Multidimensi

array_map tidak hanya bisa digunakan untuk memodifikasi elemen, tapi kita juga bisa menggunakannya untuk menambahkan elemen baru, tergantung dengan nilai yang dikembalikan oleh fungsi callback.

Dalam contoh berikut, kita memiliki array bernama $students, kita ingin menambahkan elemen baru fullName untuk setiap student yang berisi string gabungan dari firstName dan lastName.


$students = [
  [
    'firstName' => 'Bambang',
    'lastName' => 'Surambang',
  ],
  [
    'firstName' => 'Ucup',
    'lastName' => 'Surucup',
  ],
];

$result = array_map(function($student) {
  return array_merge(
    $student,
    [
      'fullName' => $student['firstName'] . ' ' . $student['lastName']
    ]
  );
}, $students);

var_dump($result);
// array(2) {
//   [0]=>
//   array(3) {
//     ["firstName"]=>
//     string(7) "Bambang"
//     ["lastName"]=>
//     string(9) "Surambang"
//     ["fullName"]=>
//     string(17) "Bambang Surambang"
//   }
//   [1]=>
//   array(3) {
//     ["firstName"]=>
//     string(4) "Ucup"
//     ["lastName"]=>
//     string(7) "Surucup"
//     ["fullName"]=>
//     string(12) "Ucup Surucup"
//   }
// }

array_map dengan Fungsi Lambda

Jika fungsi callback hanya melakukan tindakan yang sederhana yang dapat dibuat dalam satu ekspresi atau satu baris kode, kita bisa menggunakan fungsi lambda atau fungsi tanpa nama.

Contoh berikut kita ingin menjumlahkan setiap elemen array $numbers dengan 1 seperti contoh pertama di atas tapi menggunakan fungsi lambda.

$numbers = [1, 2, 3, 4, 5];

$result = array_map(fn ($number) => $number + 1, $numbers);

var_dump($result);

// array(5) {
//   [0]=>
//   int(2)
//   [1]=>
//   int(3)
//   [2]=>
//   int(4)
//   [3]=>
//   int(5)
//   [4]=>
//   int(6)
// }