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