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
$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
$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.
Quyidagi kodda ma'lum bir dasturchi qator belgilarini teskari tartibda aylantiradi. Ushbu dasturchining yechimini optimallashtiring:
<?php
$str = '123345';
$rev = implode('', array_reverse(explode('', $str)));
echo $rev; // '54321' ni chiqaradi
?>
Quyidagi kodda ma'lum bir dasturchi matndagi so'zlar sonini qidiradi. Ushbu dasturchining yechimini optimallashtiring:
<?php
$str = 'aaa bbb ccc'; // ma'lum bir uzun qator
echo count(explode(' ', $str));
?>