PHP-də massivə çevirmənin optimallaşdırılması
Ona nə etmək üçün həmişə sətri massivə bölmək lazım deyil.
Gəlin bir nümunəyə baxaq.
Aşağıdakı nümunədə kodun müəllifi sətirdə
3 rəqəminin olub-olmadığını yoxlayır:
<?php
$str = '12345';
$arr = explode('', $str); // massivə bölək
if (in_array(3, $arr)) {
echo 'var';
} else {
echo 'yox';
}
?>
Müəllif əladır - öz çevik həllərini yazmaq əvəzinə PHP-nin daxili funksiyalarından istifadə edir.
Amma kod yenə də optimal deyil: burada
sətri massivə bölməyə ehtiyac yoxdur, çünki
sətirdə axtarış edən strpos adlı hazır
funksiya var:
<?php
$str = '12345';
if (strpos(str, 3) !== false) {
echo 'var';
} else {
echo 'yox';
}
?>
Bəs niyə burada massivə bölmək pisdir? Çünki, birincisi, massivə bölmək prosessor resursları sərf edir, ikincisi, alınan massiv operativ yaddaşda yer tutacaq (üstəlik, bu yer öz sətirin tutduğu yerdən daha çox olacaq).
Məsləhət: sətri massivə bölməyin, əgər bunu etməməyin bir yolu varsa.
Aşağıdakı kodda hansısa proqramçı sətirin simvollarını əks qaydada çevirir. Bu proqramçının həllini optimallaşdırın:
<?php
$str = '123345';
$rev = implode('', array_reverse(explode('', $str)));
echo $rev; // '54321' çap edəcək
?>
Aşağıdakı kodda hansısa proqramçı mətndəki sözlərin sayını axtarır. Bu proqramçının həllini optimallaşdırın:
<?php
$str = 'aaa bbb ccc'; // hansısa uzun sətir
echo count(explode(' ', $str));
?>