4 Fungsi PHP Yang Jarang Diketahui Oleh Programmer

Jika kamu adalah seorang website developer yang sering menggunakan PHP, artikel ini akan membantu kamu memahami berbagai fungsi PHP yang jarang diketahui oleh programmer (source? trust me).

Fungsi-fungsi ini bisa dibilang fungsi yang underrated tapi sebenarnya memiliki output yang sama, hanya saja lebih singkat, padat dan to the point sehingga akan membuat kode yang kamu buat lebih efisien dan mudah di maintenance kedepannya.

Fungsi-fungsi ini juga sebenarnya sudah tersedia sejak PHP versi 5 dan sudah mengalami beberapa update terutama saat di PHP versi 8 sehingga penggunaannya menjadi lebih mudah. Langsung saja kita bahas satu persatu.

Sebelum melanjutkan, ini adalah contoh result array yang akan kita gunakan, bayangkan saja jika ini adalah result array yang kita dapatkan dari consume API memiliki struktur seperti berikut:

<?php
$arr = array(
    array(
        'nama' => 'Galih Kopling',
        'umur' => 38,
        'asal' => 'Mars'
    ),
    array(
        'nama' => 'Ebel Karbu',
        'umur' => 24,
        'asal' => 'Banjarmasin'
    ),
    array(
        'nama' => 'Zac Pala Mangka',
        'umur' => 7,
        'asal' => 'Singapore'
    ),
);

array_column

Fungsi pertama yang jarang diketahui oleh programmer adalah array_column, fungsi ini sebenarnya sangat memudahkan kita dalam melakukan ekstrak data, terlebih jika kamu sering menghadapi JSON dalam membuat sistem API ataupun meng-consume API dari tempat lain.

Jika kita hanya ingin mengambil data nama saja dan memasukkannya ke indexed array, maka biasanya yang kita lakukan adalah membuat kode seperti berikut:

<?php

.....

$data = [];
foreach ($arr as $a) {
    $data[] = $a['nama'];
}

echo json_encode($data);

Dengan kode diatas, kita akan mendapatkan output seperti berikut:

["Galih Kopling", "Ebel Karbu", "Zac Pala Mangka"]

Pada kode tersebut kita sudah menggunakan kurang lebih 4 baris kode hanya untuk mengambil 1 data. Sementara itu kita bisa menyederhanakan kode diatas agar menjadi lebih efisien dan lebih singkat menggunakan array_column, ubah kodenya jadi seperti ini:

<?php

.....

$data = array_column($arr, 'nama');

echo json_encode($data);

Lihat modifikasi yang sudah kita buat, kita menghilangkan 3 baris, menyisakan 1 baris kode dengan output yang sama.

array_map

Fungsi kedua disini adalah array_map, ada banyak hal yang bisa kita lakukan menggunakan array_map, salah satunya kita bisa memanipulasi/mengubah isi array dengan mudah.

Misal disini kita menginginkan seluruh nama menjadi huruf kapital. Kita bisa menggunakan fungsi seperti berikut:

<?php

...

$data = [];
foreach ($arr as $index => $a) {
    $data[$index]['nama'] = strtoupper($a['nama']);
    $data[$index]['umur'] = $a['umur'];
    $data[$index]['asal'] = $a['asal'];
}

echo json_encode($data);

Dengan kode diatas, kita menggunakan 7 baris kode, kita harus mendefinisikan ulang array key yang sama disetiap foreach.

Jadi jika array yang kita miliki punya banyak key maka akan sangat membuang waktu dan kode menjadi tidak clean code, dengan kode dibawah kita hanya menggunakan 4 baris dengan kode yang lebih clean code.

<?php

...

$data = array_map(function ($person) {
    $person['nama'] = strtoupper($person['nama']);
    return $person;
}, $arr);

echo json_encode($data);

Output yang dihasilkan juga sama:

[
  { "nama": "GALIH KOPLING", "umur": 38, "asal": "Mars" },
  { "nama": "EBEL KARBU", "umur": 24, "asal": "Banjarmasin" },
  { "nama": "ZAC PALA MANGKA", "umur": 7, "asal": "Singapore" }
]

array_reduce

Fungsi ketiga adalah array_reduce, disini array_reduce berfungsi untuk menjumlahkan/menghitung angka-angka yang ada di dalam array, misal disini kita akan menghitung total umur yang ada didalam array milik kita.

Kita bisa menggunakan kode foreach berikut:

<?php

...

$data = 0;
foreach ($arr as $a) {
    $data += $a['umur'];
}

echo $data;

Dengan kode diatas, kita menggunakan kurang lebih 4 baris kode dengan approach yang terkesan agak kuno (menurut saya pribadi).

Kita dapat menyederhanakan kode diatas dengan fungsi dibawah:

<?php

...

$data = array_reduce($arr, function ($carry, $item) {
    return $carry + $item['umur'];
}, 0);

echo $data;

Outputnya adalah 69. Meskipun hanya mengurangi 1 baris dan dengan output yang sama, namun kode yang menggunakan array_reduce terkesan lebih simpel dan mudah dipahami.

array_reduce membutuhkan 3 parameter, dimana 2 parameter adalah wajib dan 1 parameter opsional, kurang lebih gambarannya begini array_reduce(array, callback, initial)

  • array – array yang ingin kita proses
  • callback – fungsi yang akan diterapkan pada setiap elemen array kita, disini kita memiliki 2 parameter lagi yaitu $carry yang dimana ini digunakan untuk menyimpan nilai sementara dari element yang sebelumnya diproses dan juga $item yang menyimpan nilai sementara dari element yang saat ini sedang diproses
  • initial – adalah initial value/nilai awal dari accumulator sebelum memulai iterasi, ini opsional, jika tidak diisi maka accumulator akan diawali dengan null, saya biasanya tetap menentukan initial ini dengan 0

array_filter

Fungsi keempat ada array_filter, fungsi ini berguna jika kita ingin memfilter array dengan mudah, misal kita hanya ingin mendapatkan data orang yang memiliki umur diatas 20 tahun dari dalam array.

Jika menggunakan foreach, kodenya akan seperti berikut:

<?php

...

$data = [];
foreach ($arr as $index => $a) {
    if ($a['umur'] > 20) {
        $data[$index] = $a;
    }
}

echo json_encode($data);

Dengan kode tersebut kita menggunakan 6 baris, mari kita sederhanakan dengan array_filter seperti berikut:

<?php

...

$data = array_filter($arr, function ($person) {
    return $person['umur'] > 20;
});

echo json_encode($data);

Kita sudah menyederhanakan kode nya dan mengurangi setengah baris kode, ini benar-benar membuat kode kita mudah dipahami dan lebih rapi dengan output yang sama:

[
  { "nama": "Galih Kopling", "umur": 38, "asal": "Mars" },
  { "nama": "Ebel Karbu", "umur": 24, "asal": "Banjarmasin" }
]

Kesimpulan

Kita sudah membahas “4 Fungsi PHP Yang Jarang Diketahui Oleh Programmer“. Selanjutnya kamu bisa mengembangkan fungsi-fungsi tersebut sesuai dengan kebutuhan dan kendala yang kamu alami.

Pemilihan untuk menggunakan foreach atau fungsi alternatif seperti diatas memerlukan pertimbangan lebih lanjut sesuai masalah yang kamu hadapi. Sebagai web developer kamu dituntut membuat website yang mudah dibaca untuk diri sendiri ataupun rekan kerja lain untuk memudahkan dalam proses maintenance.