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));
?>