Optimizimi i konvertimit në array në PHP
Nuk është gjithmonë e nevojshme të ndash një varg në një array për të bërë diçka me të.
Le të shohim një shembull.
Në shembullin vijues, autori i kodit kontrollon
nëse në varg ndodhet shifra 3:
<?php
$str = '12345';
$arr = explode('', $str); // ndajmë në array
if (in_array(3, $arr)) {
echo 'ka';
} else {
echo 'nuk ka';
}
?>
Autori është i shkëlqyer - përdor funksionet e integruara të PHP, në vend që të shkruajë zgjidhje të përkohshme.
Por kodi ende nuk është optimal: këtu nuk
ka nevojë të ndahet vargu në array, sepse ekziston
funksioni i gatshëm strpos, i cili kryen
kërkim në varg:
<?php
$str = '12345';
if (strpos(str, 3) !== false) {
echo 'ka';
} else {
echo 'nuk ka';
}
?>
Pse është e keqe të ndash në array këtu? Sepse, së pari, ndarja në array harxhon burime të procesorit, së dyti, array-i i përftuar do të zërë vend në memorien operative (dhe madje ai vend do të jetë më i madh se vendi që zë vetë vargu).
Moralja: mos e ndani vargun në array, nëse ka një mënyrë për të mos e bërë këtë.
Në kodin vijues një programues kthen karakteret e vargut në rend të kundërt. Optimizoni zgjidhjen e këtij programuesi:
<?php
$str = '123345';
$rev = implode('', array_reverse(explode('', $str)));
echo $rev; // do të shfaqë '54321'
?>
Në kodin vijues dikush kërkon numrin e fjalëve në një tekst. Optimizoni zgjidhjen e këtij programuesi:
<?php
$str = 'aaa bbb ccc'; // një varg i gjatë çfarëdo
echo count(explode(' ', $str));
?>