Оптимизация на преобразуването в масив в 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));
?>