Optimalisering av konvertering til array i PHP

Det er ikke alltid nødvendig å splitte en streng til et array for å gjøre noe med den.

La oss se på et eksempel. I det følgende eksempelet sjekker kodeforfatteren om strengen inneholder sifferet 3:

php<?php
  $str = '12345';
  $arr = explode('', $str); // deler opp i et array
  
  if (in_array(3, $arr)) {
    echo 'finnes';
  } else {
    echo 'ikke';
  }
?>

Forfatteren flott - bruker PHP innebygde funksjoner i stedet for å skrive sine egne krøker.

Men koden er likevel ikke optimal: her er det ikke behov for å splitte strengen til et array, fordi det finnes en ferdig funksjon strpos som utfører søk i en streng:

php<?php
  $str = '12345';
  
  if (strpos(str, 3) !== false) {
    echo 'finnes';
  } else {
    echo 'ikke';
  }
?>

Hvorfor er det dårlig å splitte til et array her? Fordi det for det første bruker prosessorkraft på å splitte til et array, og for det andre vil det resulterende arrayet oppta plass i RAM-minnet (og dessuten vil det oppta mer plass enn strengen selv gjør).

Moralen: ikke splitt strengen til et array hvis det finnes en måte å unngå det på.

Задание 1

I den følgende koden snur en programmerer tegnene i strengen i omvendt rekkefølge. Optimaliser denne programmererens løsning:

php<?php
  $str = '123345';
  $rev = implode('', array_reverse(explode('', $str)));
  echo $rev; // vil skrive ut '54321'
?>
Задание 2

I den følgende koden søker en etter antall ord i en tekst. Optimaliser denne programmererens løsning:

php<?php
  $str = 'aaa bbb ccc'; // en lang streng
  echo count(explode(' ', $str));
?>