Optimering af konvertering til array i PHP
Det er ikke altid nødvendigt at opdele en streng i et array for at gøre noget ved den.
Lad os se på et eksempel.
I det følgende eksempel tjekker kodeforfatteren,
om strengen indeholder cifret 3:
<?php
$str = '12345';
$arr = explode('', $str); // opdel i et array
if (in_array(3, $arr)) {
echo 'til stede';
} else {
echo 'ikke til stede';
}
?>
Forfatteren gør det godt - bruger PHPs indbyggede funktioner i stedet for at skrive deres egne løsninger.
Men koden er ikke optimal: der er ingen
grund til at opdele strengen i et array, for der findes
en færdig funktion strpos, der udfører
søgning i en streng:
<?php
$str = '12345';
if (strpos(str, 3) !== false) {
echo 'til stede';
} else {
echo 'ikke til stede';
}
?>
Hvorfor er det dårligt at opdele i et array her? Fordi det for det første bruger processorkraft på at opdele i et array, for det andet vil det resulterende array optage plads i RAM (og det vil være mere plads, end strengen selv gør).
Moral: Opdel ikke en streng i et array, hvis der er en måde at undgå det på.
I den følgende kode vender en programmør strengens tegn baglæns. Optimér denne programmørs løsning:
<?php
$str = '123345';
$rev = implode('', array_reverse(explode('', $str)));
echo $rev; // vil udskrive '54321'
?>
I den følgende kode søger en programmør antallet af ord i en tekst. Optimér denne programmørs løsning:
<?php
$str = 'aaa bbb ccc'; // en lang streng
echo count(explode(' ', $str));
?>