Pengoptimuman Penukaran kepada Array dalam PHP
Tidak selalu perlu memisahkan rentetan kepada array untuk melakukan sesuatu dengannya.
Mari kita lihat contoh.
Dalam contoh berikut, penulis kod menyemak
sama ada terdapat digit 3 dalam rentetan:
<?php
$str = '12345';
$arr = explode('', $str); // pecahkan kepada array
if (in_array(3, $arr)) {
echo 'ada';
} else {
echo 'tiada';
}
?>
Penulis bagus - menggunakan fungsi terbina dalam PHP, dan tidak menulis penyelesaian yang janggal.
Tetapi kod masih tidak optimum: di sini tidak
perlu memisahkan rentetan kepada array, kerana terdapat
fungsi sedia ada strpos yang melakukan
carian dalam rentetan:
<?php
$str = '12345';
if (strpos($str, '3') !== false) {
echo 'ada';
} else {
echo 'tiada';
}
?>
Mengapa memecahkan kepada array tidak baik di sini? Kerana, pertama, pemecahan kepada array menggunakan sumber pemproses, kedua, array yang terhasil akan mengambil ruang dalam memori operasi (malah ruangnya akan lebih besar daripada ruang yang diambil oleh rentetan asal).
Pengajaran: jangan pecahkan rentetan kepada array jika ada cara untuk tidak melakukannya.
Dalam kod berikut, seorang pengaturcara membalikkan aksara rentetan dalam susunan terbalik. Optimumkan penyelesaian pengaturcara ini:
<?php
$str = '123345';
$rev = implode('', array_reverse(explode('', $str)));
echo $rev; // akan memaparkan '543321'
?>
Dalam kod berikut, seseorang mencari bilangan perkataan dalam teks. Optimumkan penyelesaian pengaturcara ini:
<?php
$str = 'aaa bbb ccc'; // sebarang rentetan panjang
echo count(explode(' ', $str));
?>