Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Działanie funkcji strtok()
scr1pt3r
post
Post #1





Grupa: Zarejestrowani
Postów: 22
Pomógł: 3
Dołączył: 27.08.2011
Skąd: Los Angeles

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


Witam.

Otóż męczy mnie następujaca sprawa.

Mam sobie taki kod.

  1. $comment = "To jest mój komentarz." ;
  2.  
  3. $zeton = strtok( $comment, " " ) ;
  4. echo $zeton ."</br></br>" ;
  5.  
  6. while( $zeton != "" )
  7. {
  8. $zeton = strtok( " " ) ;
  9. echo $zeton . "<br/>" ;
  10. }


A więc $zeton = "To"; i nic więcej to nie zawiera !
Tylko dlaczego potem dzięki pętli magicznie pojawia się:
jest
mój
komentarz.

Skąd, jak w pętli tylko występuje zmienna $zeton, a on zawiera tylko ciąg "To". Nie mogę tego zrozumieć.

Ten post edytował scr1pt3r 30.08.2011, 20:50:09
Go to the top of the page
+Quote Post
Vhaeraun
post
Post #2





Grupa: Zarejestrowani
Postów: 57
Pomógł: 6
Dołączył: 10.01.2011

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


Z samego początku manuala do strtok:
Cytat
Note that only the first call to strtok uses the string argument. Every subsequent call to strtok only needs the token to use, as it keeps track of where it is in the current string.

Czyli nawet jak wywołasz drugi raz funkcję strtok() bez parametru string, to i tak funkcja będzie pamiętała jaki string był wysłany do niej na początku.
Go to the top of the page
+Quote Post
scr1pt3r
post
Post #3





Grupa: Zarejestrowani
Postów: 22
Pomógł: 3
Dołączył: 27.08.2011
Skąd: Los Angeles

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


A paradoks typu, wywołanie tej funkcji n-razy w jednym czasie (IMG:style_emoticons/default/smile.gif) ?
Go to the top of the page
+Quote Post
darko
post
Post #4





Grupa: Zarejestrowani
Postów: 2 885
Pomógł: 463
Dołączył: 3.10.2009
Skąd: Wrocław

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


Ta funkcja ma swój własny wewnętrzny stos, w którym przechowuje wartość pierwszego argumentu, a wywołanie n-razy "w jednym czasie" to tak na prawdę wywołanie n razy w mikro-odstępach czasu, jedno po drugim. Przy pierwszym wywołaniu wartość parametru $str zostaje zapamiętana.
Go to the top of the page
+Quote Post
scr1pt3r
post
Post #5





Grupa: Zarejestrowani
Postów: 22
Pomógł: 3
Dołączył: 27.08.2011
Skąd: Los Angeles

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


I tak uważam, że to jakoś dziwnie działa...

Użyłem:

  1. $string = "This is first example";
  2. $secendString = "To jest drugi przyklad";
  3. $tok = strtok($string, " ");
  4. $secendTok = strtok($secendString, " ");
  5.  
  6. while ($tok !== false) {
  7. echo "Word=$tok<br />";
  8. $tok = strtok(" ");
  9. }


A uzyskałem:

Word=This
Word=jest
Word=drugi
Word=przyklad

Jak widać to ma taką wade jak zapis do pliku dwóch rzeczy w jednym czasie.

Ten post edytował scr1pt3r 30.08.2011, 20:47:44
Go to the top of the page
+Quote Post

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: 23.08.2025 - 04:23