Optimierung der Array-Konvertierung in PHP
Es ist nicht immer notwendig, einen String in ein Array aufzuteilen, um etwas mit ihm zu tun.
Schauen wir uns ein Beispiel an.
Im folgenden Beispiel prüft der Code-Autor,
ob der String die Ziffer 3 enthält:
<?php
$str = '12345';
$arr = explode('', $str); // in Array aufteilen
if (in_array(3, $arr)) {
echo 'есть';
} else {
echo 'нет';
}
?>
Der Autor ist super - er verwendet die eingebauten Funktionen von PHP, anstatt eigene Krücken zu schreiben.
Aber der Code ist trotzdem nicht optimal: Hier besteht
keine Notwendigkeit, den String in ein Array aufzuteilen, denn es gibt
die fertige Funktion strpos, die
die Suche in einem String durchführt:
<?php
$str = '12345';
if (strpos(str, 3) !== false) {
echo 'есть';
} else {
echo 'нет';
}
?>
Warum ist das Aufteilen in ein Array hier schlecht? Weil, erstens, das Aufteilen in ein Array Prozessorressourcen kostet, und zweitens, das resultierende Array Speicherplatz im Arbeitsspeicher belegen wird (und zwar mehr, als der Platz, den der ursprüngliche String belegt).
Die Moral: Teilen Sie einen String nicht in ein Array auf, wenn es einen Weg gibt, dies nicht zu tun.
Im folgenden Code dreht ein Programmierer die Zeichen eines Strings in umgekehrter Reihenfolge um. Optimieren Sie die Lösung dieses Programmierers:
<?php
$str = '123345';
$rev = implode('', array_reverse(explode('', $str)));
echo $rev; // gibt '54321' aus
?>
Im folgenden Code sucht jemand nach der Anzahl der Wörter in einem Text. Optimieren Sie die Lösung dieses Programmierers:
<?php
$str = 'aaa bbb ccc'; // ein langer String
echo count(explode(' ', $str));
?>