Βελτιστοποίηση μετατροπής σε πίνακα σε PHP
Δεν χρειάζεται πάντα να σπάσετε μια συμβολοσειρά σε πίνακα για να κάνετε κάτι με αυτήν.
Ας δούμε ένα παράδειγμα.
Στο επόμενο παράδειγμα, ο συγγραφέας του κώδικα ελέγχει
αν η συμβολοσειρά περιέχει το ψηφίο 3:
<?php
$str = '12345';
$arr = explode('', $str); // σπάμε σε πίνακα
if (in_array(3, $arr)) {
echo 'υπάρχει';
} else {
echo 'δεν υπάρχει';
}
?>
Ο συγγραφέας είναι εξαιρετικός - χρησιμοποιεί ενσωματωμένες συναρτήσεις της PHP, αντί να γράφει δικά του "κουτσά έργα".
Ωστόσο, ο κώδικας εξακολουθεί να μην είναι βέλτιστος: εδώ δεν υπάρχει
ανάγκη να σπάσει η συμβολοσειρά σε πίνακα, αφού υπάρχει
η έτοιμη συνάρτηση strpos, που εκτελεί
αναζήτηση μέσα σε μια συμβολοσειρά:
<?php
$str = '12345';
if (strpos($str, '3') !== false) {
echo 'υπάρχει';
} else {
echo 'δεν υπάρχει';
}
?>
Γιατί είναι κακό να σπάμε σε πίνακα εδώ; Επειδή, πρώτον, η διάσπαση σε πίνακα καταναλώνει πόρους του επεξεργαστή, και δεύτερον, ο προκύπτων πίνακας θα καταλαμβάνει χώρο στη μνήμη RAM (και μάλιστα αυτός ο χώρος θα είναι μεγαλύτερος από αυτόν που καταλαμβάνει η ίδια η συμβολοσειρά).
Συμπέρασμα: μην σπάτε τη συμβολοσειρά σε πίνακα, αν υπάρχει τρόπος να το αποφύγετε.
Στον επόμενο κώδικα, κάποιος προγραμματιστής αντιστρέφει τους χαρακτήρες μιας συμβολοσειράς σε αντίστροφη σειρά. Βελτιστοποιήστε τη λύση αυτού του προγραμματιστή:
<?php
$str = '123345';
$rev = implode('', array_reverse(explode('', $str)));
echo $rev; // θα εκτυπώσει '543321'
?>
Στον επόμενο κώδικα, κάποιος ψάχνει για τον αριθμό των λέξεων σε ένα κείμενο. Βελτιστοποιήστε τη λύση αυτού του προγραμματιστή:
<?php
$str = 'aaa bbb ccc'; // κάποια μεγάλη συμβολοσειρά
echo count(explode(' ', $str));
?>