Optimizarea conversiei în array în PHP
Nu întotdeauna este necesar să despărțim un șir de caractere într-un array pentru a face ceva cu el.
Să ne uităm la un exemplu.
În următorul exemplu, autorul codului verifică
dacă în șir de caractere se află cifra 3:
<?php
$str = '12345';
$arr = explode('', $str); // vom despărți în array
if (in_array(3, $arr)) {
echo 'există';
} else {
echo 'nu există';
}
?>
Autorul este foarte bun - utilizează funcții încorporate PHP, în loc să scrie propriile soluții improvizate.
Dar codul totuși nu este optim: aici nu este
nevoie să despărțim șirul de caractere într-un array, deoarece există
funcția gata făcută strpos, care efectuează
căutarea într-un șir de caractere:
<?php
$str = '12345';
if (strpos(str, 3) !== false) {
echo 'există';
} else {
echo 'nu există';
}
?>
De ce este rău să despărțim în array aici? Deoarece, în primul rând, despărțirea în array consumă resurse de procesor, iar în al doilea rând, array-ul rezultat va ocupa spațiu în memoria operativă (și acesta va fi mai mult decât spațiul ocupat de șirul de caractere însuși).
Morala: nu despărțiți șirul de caractere în array, dacă există o metodă de a evita acest lucru.
În următorul cod, un programator oarecare inversează caracterele șirului în ordine inversă. Optimizați soluția acestui programator:
<?php
$str = '123345';
$rev = implode('', array_reverse(explode('', $str)));
echo $rev; // va afișa '54321'
?>
În următorul cod, un programator oarecare caută numărul de cuvinte într-un text. Optimizați soluția acestui programator:
<?php
$str = 'aaa bbb ccc'; // un șir de caractere lung oarecare
echo count(explode(' ', $str));
?>