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<?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<?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ë.

Задание 1

Në kodin vijues një programues kthen karakteret e vargut në rend të kundërt. Optimizoni zgjidhjen e këtij programuesi:

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

Në kodin vijues dikush kërkon numrin e fjalëve në një tekst. Optimizoni zgjidhjen e këtij programuesi:

php<?php
  $str = 'aaa bbb ccc'; // një varg i gjatë çfarëdo
  echo count(explode(' ', $str));
?>