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