Optimalisering av konvertering til array i PHP
Det er ikke alltid nødvendig å splitte en streng til et array for å gjøre noe med den.
La oss se på et eksempel.
I det følgende eksempelet sjekker kodeforfatteren
om strengen inneholder sifferet 3:
<?php
$str = '12345';
$arr = explode('', $str); // deler opp i et array
if (in_array(3, $arr)) {
echo 'finnes';
} else {
echo 'ikke';
}
?>
Forfatteren flott - bruker PHP innebygde funksjoner i stedet for å skrive sine egne krøker.
Men koden er likevel ikke optimal: her er det ikke
behov for å splitte strengen til et array, fordi det
finnes en ferdig funksjon strpos som utfører
søk i en streng:
<?php
$str = '12345';
if (strpos(str, 3) !== false) {
echo 'finnes';
} else {
echo 'ikke';
}
?>
Hvorfor er det dårlig å splitte til et array her? Fordi det for det første bruker prosessorkraft på å splitte til et array, og for det andre vil det resulterende arrayet oppta plass i RAM-minnet (og dessuten vil det oppta mer plass enn strengen selv gjør).
Moralen: ikke splitt strengen til et array hvis det finnes en måte å unngå det på.
I den følgende koden snur en programmerer tegnene i strengen i omvendt rekkefølge. Optimaliser denne programmererens løsning:
<?php
$str = '123345';
$rev = implode('', array_reverse(explode('', $str)));
echo $rev; // vil skrive ut '54321'
?>
I den følgende koden søker en etter antall ord i en tekst. Optimaliser denne programmererens løsning:
<?php
$str = 'aaa bbb ccc'; // en lang streng
echo count(explode(' ', $str));
?>