Аптымізацыя пераўтварэння ў масіў у 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 '---';
}
?>
Чаму тут разбіваць у масіў дрэнна? Таму што, па-першае, на разбіццё ў масіў трацяцца рэсурсы працэсара, па-другое, атрыманы масіў будзе займаць месца ў аператыўнай памяці (прычым яно будзе больш, чым месца, якое займае сам радок).
Маral: не разбівайце радок у масіў, калі ёсць спосаб не рабіць гэтага.
У наступным кодзе нейкі праграміст пераварочвае сімвалы радка ў адваротным парадку. Аптымізуйце рашэнне гэтага праграміста:
<?php
$str = '123345';
$rev = implode('', array_reverse(explode('', $str)));
echo $rev; // выведзе '54321'
?>
У наступным кодзе нейкі шукае колькасць слоў у тэксце. Аптымізуйце рашэнне гэтага праграміста:
<?php
$str = 'aaa bbb ccc'; // нейкі доўгі радок
echo count(explode(' ', $str));
?>