Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] problem z warunkiem w do while
Forum PHP.pl > Forum > Przedszkole
michbudz
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.
Cysiaczek
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,
michbudz
no ale czekaj jesli igly nie znajdzie to zwraca funkcja strstr(); false? a jesli zwroci false to wtedy wyjdzie z petli?? czy jak??
Cysiaczek
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.
michbudz
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.
nospor
Zestaw funkcji operujących na tablicach
Milej lektury smile.gif

ps: po polsku
michbudz
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??
nospor
e tam, kombinujesz winksmiley.jpg
http://pl.php.net/manual/pl/function.array-values.php
I juz po sprawie 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
michbudz
wielkie dzieki ale to nie na moja glowe, przynajmniej narazie:)
nospor
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 winksmiley.jpg
Lonas
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. ?>
nospor
@l.Pociask jedno slowo: MANUAL!!!!

Najpierw zajrzyj tam, sprawdź co robi array_flip a sie przekonasz ze raz nie wystarczy. tongue.gif

Pomine juz fakt ze mogles to przetestowac i bys zobaczyl ze masz zle wyniki....
Lonas
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 smile.gif czyli w sumie są 2 ;-)

zwracam honor ;-)
michbudz
no fakt proste .... tylko dlatego ze wczesniej popatrzylem na inny przyklad w manualu.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.