Optimasi Konversi ke Array dalam PHP
Tidak selalu perlu memecah string menjadi array untuk melakukan sesuatu pada string tersebut.
Mari kita lihat sebuah contoh.
Pada contoh berikut, penulis kode memeriksa
apakah ada digit 3 dalam string:
<?php
$str = '12345';
$arr = explode('', $str); // pecah menjadi array
if (in_array(3, $arr)) {
echo 'ada';
} else {
echo 'tidak ada';
}
?>
Penulis kode hebat - menggunakan fungsi bawaan PHP daripada menulis solusi yang tidak elegan.
Tapi kodenya tetap tidak optimal: di sini tidak
perlu memecah string menjadi array, karena sudah ada
fungsi siap pakai strpos yang melakukan
pencarian dalam string:
<?php
$str = '12345';
if (strpos($str, '3') !== false) {
echo 'ada';
} else {
echo 'tidak ada';
}
?>
Mengapa memecah menjadi array di sini buruk? Karena, pertama-tama, pemecahan menjadi array menghabiskan sumber daya prosesor, kedua, array yang dihasilkan akan memakan tempat di memori RAM (dan ukurannya akan lebih besar daripada tempat yang ditempati oleh string itu sendiri).
Pelajaran: jangan memecah string menjadi array jika ada cara untuk tidak melakukannya.
Dalam kode berikut, seorang programmer membalikkan karakter string dalam urutan terbalik. Optimalkan solusi programmer ini:
<?php
$str = '123345';
$rev = implode('', array_reverse(explode('', $str)));
echo $rev; // akan menampilkan '54321'
?>
Dalam kode berikut, seseorang mencari jumlah kata dalam teks. Optimalkan solusi programmer ini:
<?php
$str = 'aaa bbb ccc'; // sebuah string yang panjang
echo count(explode(' ', $str));
?>