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.
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 nialinull
untuk melakukan operasi zip pada beberapa array.array
- array sumber yang dimana setiap elemennya akan diteruskan ke fungsicallback
.arrays
- array yang berisi variabel tambahan yang akan diteruskan ke fungsicallback
.
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)
// }