Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z funkcją + in_array()
grabarz5
post
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 16.03.2015

Ostrzeżenie: (0%)
-----


Witam.
Przesiedziałem chyba godzinę nad znalezieniem problemu. Bezskutecznie. Idąc w myśl powiedzenia "co dwie głowy to nie jedna", zamieszczam kod pewnej funkcji:
  1. function translate($tString){
  2. $dictionary = file('dictionary.txt');
  3.  
  4. for($i=0; $i<count($dictionary); $i++){
  5. $rawVerb = explode(' ', $dictionary[$i]);
  6. $dVerb[] = $rawVerb[0];
  7. $pVerb[] = $rawVerb[1];
  8. }
  9.  
  10. $rawString = explode(' ',$tString);
  11.  
  12. for($x=0; $x<count($rawString); $x++){
  13. if(in_array($rawString[$x], $pVerb)){
  14. echo $eString[] = $dVerb[$nx];
  15. }
  16. }
  17. return $eString;
  18. }


Funkcja na wejściu otrzymuje wartość pola tekstowego.
Plik dictionary.txt jest zwykłym plikiem tekstowym. Sam plik odczytywany jest poprawnie. Problem leży przy zmiennej $eString, która zwyczajnie, wg interpretera, sobie nie istnieje. Nie potrafię znaleźć powodu.

Z góry bardzo dziękuję za pomoc
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
mstraczkowski
post
Post #2





Grupa: Zarejestrowani
Postów: 273
Pomógł: 52
Dołączył: 3.02.2013
Skąd: Przemyśl

Ostrzeżenie: (0%)
-----


Na tyle na ile mogę zrozumieć cel działania tej funkcji, to wydaje mi się, że posiadasz błędne dane w pliku tekstowym.
Albo odczytujesz je w nieprawidłowy sposób (może za mało lub za dużo spacji w explode)

Gdy utworzyłem sobie skróconą wersję twojej funkcji z danymi na sztywno w tablicy (bez czytania z pliku)
To wydaje mi się, że otrzymywany wynik jest prawidłowy.

I jeszcze jedna uwaga, funkcja in_array odróżnia wielkość liter (to znaczy, że np Mam != mam)

  1. function translate($tString){
  2.  
  3. $pVerb = array('Mam', 'na', 'imie', 'Maciek');
  4. $dVerb = array('My', 'name', 'is', 'Maciek');
  5.  
  6. $rawString = explode(' ',$tString);
  7.  
  8. for($x=0; $x<count($rawString); $x++){
  9. if(in_array($rawString[$x], $pVerb)){
  10. $eString[] = $dVerb[$x];
  11. }
  12. }
  13. return $eString;
  14. }
  15.  
  16. var_dump(translate('Mam na imie Maciek'));


Ten post edytował mstraczkowski 19.04.2015, 01:03:46
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 31.12.2025 - 06:47