PHPda massivga aylantirishni optimallashtirish

Har doim ham qatorni massivga ajratish shart emas, unga biror narsa qilish uchun.

Keling, bir misolni ko'rib chiqaylik. Quyidagi misolda kod muallifi qatorda 3 raqami borligini tekshiradi:

php<?php
  $str = '12345';
  $arr = explode('', $str); // massivga ajratamiz
  
  if (in_array(3, $arr)) {
    echo 'bor';
  } else {
    echo 'yo\'q';
  }
?>

Muallif yaxshi ish qilgan - o'zining notekis yechimlarini yozish o'rniga PHPning o'rnatilgan funksiyalaridan foydalanadi.

Ammo kod baribir optimal emas: bu erda qatorni massivga ajratishning hojati yo'q, chunki qatorda qidiruvni amalga oshiradigan tayyor strpos funksiyasi mavjud:

php<?php
  $str = '12345';
  
  if (strpos(str, 3) !== false) {
    echo 'bor';
  } else {
    echo 'yo\'q';
  }
?>

Nega bu erda massivga ajratish yomon? Chunki birinchidan, massivga ajratish protsessor resurslarini sarflaydi, ikkinchidan, olingan massiv operativ xotirada o'rin egallaydi (va bu o'rin, qatorning o'zi egallagan o'rindan ko'proq bo'ladi).

Xulosa: agar buni qilmaslik imkoniyati mavjud bo'lsa, qatorni massivga ajratmang.

Задание 1

Quyidagi kodda ma'lum bir dasturchi qator belgilarini teskari tartibda aylantiradi. Ushbu dasturchining yechimini optimallashtiring:

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

Quyidagi kodda ma'lum bir dasturchi matndagi so'zlar sonini qidiradi. Ushbu dasturchining yechimini optimallashtiring:

php<?php
  $str = 'aaa bbb ccc'; // ma'lum bir uzun qator
  echo count(explode(' ', $str));
?>