Βελτιστοποίηση μετατροπής σε πίνακα σε PHP

Δεν χρειάζεται πάντα να σπάσετε μια συμβολοσειρά σε πίνακα για να κάνετε κάτι με αυτήν.

Ας δούμε ένα παράδειγμα. Στο επόμενο παράδειγμα, ο συγγραφέας του κώδικα ελέγχει αν η συμβολοσειρά περιέχει το ψηφίο 3:

php<?php
  $str = '12345';
  $arr = explode('', $str); // σπάμε σε πίνακα
  
  if (in_array(3, $arr)) {
    echo 'υπάρχει';
  } else {
    echo 'δεν υπάρχει';
  }
?>

Ο συγγραφέας είναι εξαιρετικός - χρησιμοποιεί ενσωματωμένες συναρτήσεις της PHP, αντί να γράφει δικά του "κουτσά έργα".

Ωστόσο, ο κώδικας εξακολουθεί να μην είναι βέλτιστος: εδώ δεν υπάρχει ανάγκη να σπάσει η συμβολοσειρά σε πίνακα, αφού υπάρχει η έτοιμη συνάρτηση strpos, που εκτελεί αναζήτηση μέσα σε μια συμβολοσειρά:

php<?php
  $str = '12345';
  
  if (strpos($str, '3') !== false) {
    echo 'υπάρχει';
  } else {
    echo 'δεν υπάρχει';
  }
?>

Γιατί είναι κακό να σπάμε σε πίνακα εδώ; Επειδή, πρώτον, η διάσπαση σε πίνακα καταναλώνει πόρους του επεξεργαστή, και δεύτερον, ο προκύπτων πίνακας θα καταλαμβάνει χώρο στη μνήμη RAM (και μάλιστα αυτός ο χώρος θα είναι μεγαλύτερος από αυτόν που καταλαμβάνει η ίδια η συμβολοσειρά).

Συμπέρασμα: μην σπάτε τη συμβολοσειρά σε πίνακα, αν υπάρχει τρόπος να το αποφύγετε.

Задание 1

Στον επόμενο κώδικα, κάποιος προγραμματιστής αντιστρέφει τους χαρακτήρες μιας συμβολοσειράς σε αντίστροφη σειρά. Βελτιστοποιήστε τη λύση αυτού του προγραμματιστή:

php<?php
  $str = '123345';
  $rev = implode('', array_reverse(explode('', $str)));
  echo $rev; // θα εκτυπώσει '543321'
?>
Задание 2

Στον επόμενο κώδικα, κάποιος ψάχνει για τον αριθμό των λέξεων σε ένα κείμενο. Βελτιστοποιήστε τη λύση αυτού του προγραμματιστή:

php<?php
  $str = 'aaa bbb ccc'; // κάποια μεγάλη συμβολοσειρά
  echo count(explode(' ', $str));
?>