Tömbvé konvertálás optimalizálása PHP-ban
Nem mindig szükséges egy sztringet tömbre bontani, hogy valamit tegyünk vele.
Nézzünk egy példát.
A következő példában a kód szerzője azt ellenőrzi,
hogy van-e a sztringben a 3 számjegy:
<?php
$str = '12345';
$arr = explode('', $str); // bontsuk tömbre
if (in_array(3, $arr)) {
echo 'van';
} else {
echo 'nincs';
}
?>
A szerző jó munkát végzett - a PHP beépített függvényeit használja, ahelyett, hogy saját megoldást írna.
De a kód így sem optimális: itt nincs
szükség a sztring tömbbé alakítására, hiszen létezik
a kész strpos függvény, amely
keresést végez a sztringen belül:
<?php
$str = '12345';
if (strpos(str, 3) !== false) {
echo 'van';
} else {
echo 'nincs';
}
?>
Miért rossz itt tömbbé bontani? Mert először is, a tömbbé alakítás processzor erőforrást emészt fel, másodszor pedig a kapott tömb helyet foglal a operatív memóriában (ráadásul ez a hely több lesz, mint amennyit maga a sztring foglal).
Tanulság: ne bontsatok sztringet tömbre, ha van módotok arra, hogy ne tegyétek.
A következő kódban egy programozó megfordítja a sztring karaktereit. Optimalizáljátok ennek a programozónak a megoldását:
<?php
$str = '123345';
$rev = implode('', array_reverse(explode('', $str)));
echo $rev; // kiírja '54321'
?>
A következő kódban valaki a szavak számát keresi egy szövegben. Optimalizáljátok ennek a programozónak a megoldását:
<?php
$str = 'aaa bbb ccc'; // valamilyen hosszú sztring
echo count(explode(' ', $str));
?>