Optimering av konvertering till array i PHP
Det är inte alltid nödvändigt att dela upp en sträng i en array för att göra något med den.
Låt oss titta på ett exempel.
I följande exempel kontrollerar kodförfattaren
om strängen innehåller siffran 3:
<?php
$str = '12345';
$arr = explode('', $str); // delar upp i en array
if (in_array(3, $arr)) {
echo 'finns';
} else {
echo 'saknas';
}
?>
Författaren har gjort ett bra jobb - använder PHPs inbyggda funktioner istället för att skriva egna lösningar.
Men koden är ändå inte optimal: det finns inget behov
av att dela upp strängen i en array, eftersom det finns
en färdig funktion strpos som utför
sökning i en sträng:
<?php
$str = '12345';
if (strpos(str, 3) !== false) {
echo 'finns';
} else {
echo 'saknas';
}
?>
Varför är det dåligt att dela upp i en array här? För det första kräver uppdelningen till array processorkraft, för det andra kommer den resulterande arrayen att ta upp utrymme i arbetsminnet (och detta utrymme kommer att vara större än det utrymme som strängen själv upptar).
Slutsats: dela inte upp strängar i arrayer om det finns ett sätt att undvika det.
I följande kod vänder en programmerare om tecknen i en sträng. Optimera denna programmerares lösning:
<?php
$str = '123345';
$rev = implode('', array_reverse(explode('', $str)));
echo $rev; // skriver ut '54321'
?>
I följande kod letar någon efter antalet ord i en text. Optimera denna programmerares lösning:
<?php
$str = 'aaa bbb ccc'; // en lång sträng
echo count(explode(' ', $str));
?>