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<?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<?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äň.

Задание 1

Aşakdaky kodda käbir programmist ýazgynyň nyşanlaryny ters tertipde öwürýär. Bu programmistiň çözgüdini optimizasiýalaň:

php<?php
  $str = '123345';
  $rev = implode('', array_reverse(explode('', $str)));
  echo $rev; // '54321' çykarar
?>
Задание 2

Aşakdaky kodda käbir programmist tekstdäki sözleriň sanyny gözleýär. Bu programmistiň çözgüdini optimizasiýalaň:

php<?php
  $str = 'aaa bbb ccc'; // käbir uzyn ýazgy
  echo count(explode(' ', $str));
?>