Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] problem z warunkiem w do while, maly problem z funkcja strstr();
michbudz
post
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 14.06.2006

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


witam. mam maly problem ...

  1. <?php
  2. do{
  3.  //tu się cos robi...
  4.  
  5. }while( strstr($igla, $stog) || $I<=$c)
  6. ?>


mianowicie chodzi mi o ta petelke. Chcialbym aby sie wykonywala do momentu kiedy nie znajdzie $igly w $stogu lub gdy $I bedzie wieksze od $c . wydaje mi sie ze jest to poprawny zapis ale gdy przychodzi co do czego z moich badan wynika ze funkcja konczy sie tylko wtedy gdy nie zostanie spelniony warunek ten drugi.
Czy funkcja strstr(); zwraca true lub false jesli znajdzie $igle w $stog lub tez nie??

bo chyba w tym problem.
prosze o pomoc
jesli bedzie trzeba podesle caly skrypt.
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #2





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Cytat
Returns part of haystack string from the first occurrence of needle to the end of haystack.

If needle is not found, returns FALSE.

http://pl2.php.net/manual/pl/function.strstr.php

Spróbuj dać tak:
  1. <?php
  2. }while( !strstr($igla, $stog) || $I<=$c) //negacja z przodu
  3. ?>


Pozdrawiam,

Ten post edytował Cysiaczek 22.08.2006, 20:28:36
Go to the top of the page
+Quote Post
michbudz
post
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 14.06.2006

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


no ale czekaj jesli igly nie znajdzie to zwraca funkcja strstr(); false? a jesli zwroci false to wtedy wyjdzie z petli?? czy jak??
Go to the top of the page
+Quote Post
Cysiaczek
post
Post #4





Grupa: Moderatorzy
Postów: 4 465
Pomógł: 137
Dołączył: 26.03.2004
Skąd: Gorzów Wlkp.




Nie bardzo dasz dwa warunki ://
Daj jeden np.
  1. <?php
  2. $i=0;
  3. $str="abc";
  4.  
  5. do {
  6. print $i;
  7. if ($i==3){$str='abcd';}
  8. if (strstr($str,"d")){break;}
  9.  
  10. $i++;
  11. }
  12. while ($i<=10);
  13. ?>


Jak widzisz - gdy funkcja strstr() nie zwróci false, to petla zostanie przerwana.

Pozdrawiam.
Go to the top of the page
+Quote Post
michbudz
post
Post #5





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 14.06.2006

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


mam jeszcze jedno pytanie, nie bede robil nowego tematu bo szkoda zasmiecac.

jak usunac najprosciej i najekonomiczniej z tablicy powtarzajace sie no te nie pamietam jak sie nazywa to...np

$tab[1]=5
$tab[2]=10
$tab[3]=5
$tab[4]=7

pewnie jak usunie sie tab[3] to bedzie trzeba cos wstawic za tab[3] zeby wszystko gralo potem.

moglo by wstawiac za tab[3] po usunieciu tab[ostatnie] .
niewiem wlasnie jak porownac tablice zeby znalazlo takie same jak np. tab[1] i tab[3]
bedzie trzeba porownac kazda z kazda?? czy moze jest jakas funkcja do takich rzeczy.
pozdrawiam.
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Zestaw funkcji operujących na tablicach
Milej lektury (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

ps: po polsku
Go to the top of the page
+Quote Post
michbudz
post
Post #7





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 14.06.2006

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


no dobra znalazlem taka funnkcje array_unique(); usuwa powtarzajace sie elementy tylko ze z tego wynika nastepny problem.

po usunieciu np...

tab[1]=5
tab[2]=10
tab[3]=5 // usunie ten bo sie powtarza
tab[4]=7
tab[5]=10 // usunie ten bo sie powtarza
tab[5]=11

po usunieciu mam puste tablice tab[3] i tab[5] jak sie teraz tego pozbyc:/ chcialbym miec wszystko uporzadkowane. a na to nie znalazlem funkcji:/

a czy dzialalo by cos takiego w moim mankamencie...

  1. <?php
  2. $i=count(ulozony_wyraz);
  3.  for($k=0; $k<=$ile_ulozonych; $k++)
  4.  {
  5.  
  6. if($ulozony_wyraz[$k]==$ulozony_wyraz[$k+1]) // dlatego przyrownuje do nastepnego poniewaz w moim wypadku powtorzenia w tablicy
     wystepuje jedynie jedno po drugim
  7.  
  8. {
  9.  $ulozony_wyraz[$k+1]= $ulozony_wyraz[$i]; // a teraz powtarzajaca sie wartosc zastepuje ostatnia wartoscia z tablicy
  10.  $i--;
  11.  
  12. }
  13.  
  14.  }
  15. ?>


dobrze to bedzie??
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




e tam, kombinujesz (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
http://pl.php.net/manual/pl/function.array-values.php
I juz po sprawie (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

edit:
w manuala w komentach do array_unique, masz ciekawe polaczenie array_flip() z array_merge(), ktore robi to samo ci array_unique, ale indexy numeruje od poczatku. I co ciekawe jest szybsze
Go to the top of the page
+Quote Post
michbudz
post
Post #9





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 14.06.2006

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


wielkie dzieki ale to nie na moja glowe, przynajmniej narazie:)
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




Ale co nie jest na Twoją glowe? Przepisac kawalek kodu z manuala?

  1. <?php
  2. $final = array(0,5,6,4,5,10,5,6,8);
  3.  
  4. echo '<pre>';
  5. print_r($final);
  6. echo '</pre>';
  7.  
  8. $final = array_merge(array_flip(array_flip($final)));
  9. echo '<pre>';
  10. print_r($final);
  11. echo '</pre>';
  12. ?>

No troche wiary w siebie (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
Go to the top of the page
+Quote Post
Lonas
post
Post #11





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


Nie rozumiem tylko po co tutaj 2 razy array_flip

raz wystarczy i też działa :
  1. <?php
  2. $final = array_merge(array_flip($final));
  3. echo '<pre>';
  4. print_r($final);
  5. echo '</pre>';
  6. ?>
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 561
Pomógł: 6315
Dołączył: 27.12.2004




@l.Pociask jedno slowo: MANUAL!!!!

Najpierw zajrzyj tam, sprawdź co robi array_flip a sie przekonasz ze raz nie wystarczy. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Pomine juz fakt ze mogles to przetestowac i bys zobaczyl ze masz zle wyniki....
Go to the top of the page
+Quote Post
Lonas
post
Post #13





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

Ostrzeżenie: (20%)
X----


Kurcze no własnie czytam o tym przetestowałęm i wynik mam taki sam..

aa ok.. miałęm wczesniej jeszcze sprawdzenie co zrobi samo array_flip (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) czyli w sumie są 2 ;-)

zwracam honor ;-)

Ten post edytował L.Pociask 24.08.2006, 08:04:20
Go to the top of the page
+Quote Post
michbudz
post
Post #14





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 14.06.2006

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


no fakt proste .... tylko dlatego ze wczesniej popatrzylem na inny przyklad w manualu.
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: 22.12.2025 - 17:54