Jakarta-Bandung-Jogja-Surabaya…

“If you can’t explain it to a six year old, you don’t understand it yourself.”
Albert Einstein
T

idak jarang kita mendapat kasus seperti menggabungkan nama-nama kota seperti judul diatas. Biasanya nama-nama kota itu diambil dari database dan dikeluarkan dalam bentuk array.

Lihat contoh kode PHP di bawah ini. Kita asumsikan saja data sudah tersaji dalam bentuk array.

<?php
    $array = array('Jakarta','Bandung','Jogja','Surabaya');
?>

Biasanya sebagai pemrogram(programmer : membiasakan berbahasa Indonesia) normal, maka langkah awal adalah melakukan iterasi dengan menggunakan for, misalnya:

<?php
$array = array('Jakarta','Bandung','Jogja','Surabaya');
foreach ($array as $kota)
{
    echo $kota. "-";
}
?>

Dan hasilnya adalah :

Jakarta-Bandung-Jogja-Surabaya-

Ups! Ada sesuatu di belakang kalimat hasil penggabungan diatas. Masih ada karakter “-” disana. Biasanya pemrogram akan mengakali hasil ini dengan merekayasa kode program. Silakan bagi pemula untuk bereskperimen sendiri.

Tapi untunglah ada solusi yang lebih sederhana. Dalam PHP dan juga beberapa bahasa pemrograman lainnya seperti C# dan Javascript (di bawah nanti akan kami sertakan contoh baris kode dalam C# dan Javascript), ada fungsi yang dikenal dengan join.

<?php
    $array = array('Jakarta','Bandung','Jogja','Surabaya');
    echo join("-",$array );
?>

Dan hasilnya adalah :

Jakarta-Bandung-Jogja-Surabaya

Kinerja Lebih Baik

Cobalah bereksperimen dengan baris kode di bawah ini :

$sArr = array();
for ($i = 0; $i < 50000; $i++) {
    $sArr[] = 'Kata'.$i;
}

// standard string append
$mulai = microtime(true)*1000;
$str = '';
for ($i = 0; $i < count($sArr); $i++) {
    $str .= $sArr[$i].'-';
}
$selesai = microtime(true)*1000;
echo "dengan for: " . ($selesai-$mulai) . "(milidetik)</br>";

// array join
$mulai = microtime(true)*1000;
$str = join('-', $sArr);
$selesai = microtime(true)*1000;
echo "dengan join: " . ($selesai-$mulai) . "(milidetik)</br>";

// foreach
$mulai = microtime(true)*1000;
$str = '';
foreach($sArr as $string) {
    $str .= $string.'-';
}
$selesai = microtime(true)*1000;
echo "dengan foreach: " . ($selesai-$mulai) . "(milidetik)</br>";

Di komputer uji kami angka yang dihasilkan adalah(hasil tiap komputer dan tiap pengujian akan berbeda-beda):

dengan for: 101.17114257812(milidetik)
dengan join: 6.09814453125(milidetik)
dengan foreach: 33.510009765625(milidetik)

Dari hasil diatas dapat disimpulkan bahwa kinerja penggabungan tipe data string dengan fungsi join menunjukkan hasil yang jauh lebih baik. Terutama jika kita akan bekerja dengan data yang besar.

Lampiran Contoh Baris Kode Dalam C#

using System;
class Program
{
    static void Main()
    {
        string[] arr = { "Jakarta","Bandung","Jogja","Surabaya" };
        Console.WriteLine(string.Join("-", arr));
    }
}

Lampiran Contoh Baris Kode Dalam HTML dan Javascript

<!DOCTYPE html>
<html>
<body>

<p id="pkota">Tekan tombol di bawah.</p><button onclick="gabung()">Gabung</button>

<script>
function gabung()
{
    var kota= ["Jakarta","Bandung","Jogja","Surabaya"];
    var x=document.getElementById("pkota");
    x.innerHTML=kota.join("-");
}
</script>

</body>
</html>