Semplice traduttore

Ciao, vorrei realizzare un piccole traduttore (si tratta solo di un esercizio).

Ho creato un dizionario e un testo di esempio come input. Ma navigo in alto mare. Non capisco come potere fare riferimento al dizionario prendendo però le parole inserite in input.

<?php
   $dizio = array ('albero' => 'tree',
                   'barca' => 'boat',
                   'casa' => 'home',
                   'dare' => 'give',
                   'essere' => 'be',
                   'fare' => 'do',
                   'giocare' => 'play',
                   'io' => 'I',
                   'avere' => 'have',
                   'domani' => 'tomorrow');
   $input = 'io giocare casa domani';
   $testo = explode(' ',$input);
   while(list($key,$value) = each($dizio)) {
      echo $value[$testo];
   }
?>

Così ottengo qualche lettera che però sinceramente non so nemmeno da dove venga prelevata.

inviato 5 anni fa
gabar-el
X 0 X

Ciao gabar-el,

ti propongo la mia soluzione per ricercare all'interno dell'array dizionario le parole da sostituire:

<?php
$dizio = array ('albero' => 'tree',
                   'barca' => 'boat',
                   'casa' => 'home',
                   'dare' => 'give',
                   'essere' => 'be',
                   'fare' => 'do',
                   'giocare' => 'play',
                   'io' => 'I',
                   'avere' => 'have',
                   'domani' => 'tomorrow');
   $input = 'io giocare casa domani';
   $testo = explode(' ',$input);
   
  foreach($testo as $key => $value)
  {
    if (isset($dizio[$value])) {
       $testo[$key] = $dizio[$value]; 
    }  
  }
  
  echo implode(' ', $testo);
   
?>

Sostanzialmente ho sostituito il tuo ciclo while con un foreach che analizza ogni elemento dell'array $testo,

ricerca il valore come chiave nel tuo dizionario con:

if (isset($dizio[$value]))

e se esiste ne sostituisce il contenuto con l'istruzione:

$testo[$key] = $dizio[$value];

l'ultimo comando:

echo implode(' ', $testo);

stampa i valori dell'array separati da uno spazio. Nel tuo esempio il testo finale sarà:

I play home tomorrow

Ciao

risposto 5 anni fa
zeta80
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda