Оптимизација претварања у низ у PHP
Није увек потребно разбијати стринг у низ да би се нешто урадило са њим.
Хајде да погледамо пример.
У следећем примеру аутор кода проверава,
да ли у стрингу постоји цифра 3:
<?php
$str = '12345';
$arr = explode('', $str); // разбијамо у низ
if (in_array(3, $arr)) {
echo 'постоји';
} else {
echo 'не постоји';
}
?>
Аутор је одличан - користи уграђене функције PHP, уместо да пише своје импровизоване решења.
Али код ипак није оптималан: овде нема
потребе да се стринг разбија у низ, јер постоји
готовa функцијa strpos, која врши
претрагу по стрингу:
<?php
$str = '12345';
if (strpos($str, '3') !== false) {
echo 'постоји';
} else {
echo 'не постоји';
}
?>
Зашто је разбијање у низ овде лоше? Зато што се, прво, на разбијање у низ троше ресурси процесора, друго, добијени низ ће заузимати простор у оперативној меморији (притом тај простор ће бити већи него простор који заузима сам стринг).
Поука: не разбијајте стринг у низ, ако постоји начин да то не урадите.
У следећем коду неки програмер окреће симболе стринга у обрнутом редоследу. Оптимизујте решење овог програмера:
<?php
$str = '12345';
$rev = implode('', array_reverse(explode('', $str)));
echo $rev; // исписаће '54321'
?>
У следећем коду неки тражи број речи у тексту. Оптимизујте решење овог програмера:
<?php
$str = 'aaa bbb ccc'; // неки дугачак стринг
echo count(explode(' ', $str));
?>