PHP-dä massiwe öwürmegi optimizasiýa
Onuň bilen bir zat etmek üçin ýazgyny hemişe massiwe bölmek zerur däl.
Geliň bir mysala seredeliň.
Aşakdaky mysalda kodyň awtory ýazgyda
3 sanynyň bardygyny barlap görýär:
<?php
$str = '12345';
$arr = explode('', $str); // massiwe bölýäris
if (in_array(3, $arr)) {
echo 'bar';
} else {
echo 'ýok';
}
?>
Awtor ýagşy iş edýär - özüniň goňşuryklaryny ýazmak ýerine PHP-niň gurlan funksiýalaryny ulanýar.
Emma kod henizem optimallaşdyrylmadyk: bu ýerde
ýazgyny massiwe bölmäge zerurlyk ýok, sebäbi
ýazgyda gözlemek üçin taýýar strpos funksiýasy bar:
<?php
$str = '12345';
if (strpos(str, 3) !== false) {
echo 'bar';
} else {
echo 'ýok';
}
?>
Bu ýerde näme üçin massiwe bölmek ýaman? Sebäbi, birinjiden, massiwe bölmek üçin prosesoryň çeşmeleri sarp edilýär, ikinjiden, alynan massiwe operativ ýatda ýer tutar (hem-de bu ýer, ýazgynyň özüniň tutýan ýerinden has uly bolar).
Şahsy netije: muny etmezlik üçin ýol bar bolsa, ýazgyny massiwe bölmäň.
Aşakdaky kodda käbir programmist ýazgynyň nyşanlaryny ters tertipde öwürýär. Bu programmistiň çözgüdini optimizasiýalaň:
<?php
$str = '123345';
$rev = implode('', array_reverse(explode('', $str)));
echo $rev; // '54321' çykarar
?>
Aşakdaky kodda käbir programmist tekstdäki sözleriň sanyny gözleýär. Bu programmistiň çözgüdini optimizasiýalaň:
<?php
$str = 'aaa bbb ccc'; // käbir uzyn ýazgy
echo count(explode(' ', $str));
?>