Optimalisatie van conversie naar array in PHP
Het is niet altijd nodig een string in een array op te splitsen om er iets mee te doen.
Laten we een voorbeeld bekijken.
In het volgende voorbeeld controleert de code-auteur
of de string het cijfer 3 bevat:
<?php
$str = '12345';
$arr = explode('', $str); // splits in een array
if (in_array(3, $arr)) {
echo 'aanwezig';
} else {
echo 'afwezig';
}
?>
De auteur is goed bezig - gebruikt ingebouwde PHP-functies in plaats van eigen omwegen te schrijven.
Maar de code is nog steeds niet optimaal: hier is het niet
nodig de string in een array op te splitsen, aangezien er
een kant-en-klare functie strpos bestaat die
zoeken in een string uitvoert:
<?php
$str = '12345';
if (strpos($str, '3') !== false) {
echo 'aanwezig';
} else {
echo 'afwezig';
}
?>
Waarom is het hier slecht om in een array op te splitsen? Omdat ten eerste het opsplitsen in een array processorbronnen kost, en ten tweede zal de resulterende array ruimte in het werkgeheugen innemen (meer dan de ruimte die de string zelf inneemt).
De moraal: splits een string niet in een array als er een manier is om dit niet te doen.
In de volgende code keert een programmeur de tekens in de string om. Optimaliseer de oplossing van deze programmeur:
<?php
$str = '123345';
$rev = implode('', array_reverse(explode('', $str)));
echo $rev; // geeft '54321' uit
?>
In de volgende code zoekt iemand naar het aantal woorden in een tekst. Optimaliseer de oplossing van deze programmeur:
<?php
$str = 'aaa bbb ccc'; // een of andere lange string
echo count(explode(' ', $str));
?>