Masyvo konvertavimo optimizavimas PHP
Ne visada reikia skaidyti eilutę į masyvą, kad ką nors su ja darytume.
Pažiūrėkime pavyzdį.
Šiame pavyzdyje kodo autorius tikrina,
ar eilutėje yra skaitmuo 3:
<?php
$str = '12345';
$arr = explode('', $str); // suskaidome į masyvą
if (in_array(3, $arr)) {
echo 'yra';
} else {
echo 'nėra';
}
?>
Autorius šaunuolis - naudoja įmontuotas PHP funkcijas, užuot rašęs savo "lajus".
Bet kodas vis tiek neoptimalus: čia nėra
reikalo skaidyti eilutę į masyvą, juk egzistuoja
jau paruošta funkcija strpos, atliekanti
paiešką eilutėje:
<?php
$str = '12345';
if (strpos(str, 3) !== false) {
echo 'yra';
} else {
echo 'nėra';
}
?>
Kodėl čia skaidyti į masyvą blogai? Todėl, kad, pirma, skaidymui į masyvą sunaudojami procesoriaus resursai, antra, gautasis masyvas užims vietos operatyviojoje atmintyje (be to, ji bus daugiau, nei vietos, kurią užima pati eilutė).
Moralas: neskaidykite eilutės į masyvą, jei yra būdas to nedaryti.
Šiame kode kažkoks programuotojas apverčia eilutės simbolius atvirkštine tvarka. Optimizuokite šio programuotojo sprendimą:
<?php
$str = '123345';
$rev = implode('', array_reverse(explode('', $str)));
echo $rev; // išves '54321'
?>
Šiame kode kažkas ieško žodžių skaičiaus tekste. Optimizuokite šio programuotojo sprendimą:
<?php
$str = 'aaa bbb ccc'; // kažkokia ilga eilutė
echo count(explode(' ', $str));
?>