Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wykluczenia z pętli.
ratosluaf
post
Post #1





Grupa: Zarejestrowani
Postów: 91
Pomógł: 4
Dołączył: 14.10.2012

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


Kod
   for ($i=0;$i<$n; $i++)
    {
    $seconds = $results['serwer']['players'][$i][time];
    $hms = gmdate('H:i:s',$seconds);
    $patterns = array();
    $patterns[0] = '/</';
    $patterns[1] = '/>/';
    $replacements = array();
    $replacements[1] = '&lt;';
    $replacements[2] = '&gt';
    $gracz =  preg_replace($patterns, $replacements, $results['serwer']['players'][$i][name]);
    echo "<td>".$gracz."</td><td>".$results['serwer']['players'][$i][score]."</td><td>".$hms."</td></tr>";
    }


$results['serwer']['players'][$i][name] - tutaj jest nazwa gracza.
Co mogę zrobić, aby nie pokazywało w pętli rekordu, jeżeli $gracz zawiera daną frazę? Po prostu, aby omijał ten wiersz, i kontynuował dalej. Coś na podobieństwo:

Nick 1
Nick 2
Nick 3
Nick wykluczony
Nick 4


Aby pokazywało:
Nick 1
Nick 2
Nick 3
Nick 4
Go to the top of the page
+Quote Post
tolomei
post
Post #2





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

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


Witaj.

Coś takiego ?

  1. for ($i=0;$i<$n; $i++)
  2. {
  3. $seconds = $results['serwer']['players'][$i][time];
  4. $hms = gmdate('H:i:s',$seconds);
  5. $patterns = array();
  6. $patterns[0] = '/</';
  7. $patterns[1] = '/>/';
  8. $replacements = array();
  9. $replacements[1] = '<';
  10. $replacements[2] = '&gt';
  11. $gracz = preg_replace($patterns, $replacements, $results['serwer']['players'][$i][name]);
  12. if($results['serwer']['players'][$i][score] != 'wykluczony') {
  13. echo "<td>".$gracz."</td><td>".$results['serwer']['players'][$i][score]."</td><td>".$hms."</td></tr>";
  14. }
  15. }


Pozdrawiam.

Ten post edytował tolomei 29.01.2013, 15:43:27


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
Go to the top of the page
+Quote Post
kristaps
post
Post #3





Grupa: Zarejestrowani
Postów: 279
Pomógł: 36
Dołączył: 1.03.2012

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


Najprościej chyba na warunkach. Dajesz ifa, który wyklucza dane nicki i else, w którym dopisujesz do tabeli.

tolomei mnie ubiegł. smile.gif

Ten post edytował kristaps 29.01.2013, 15:42:36
Go to the top of the page
+Quote Post
aras785
post
Post #4





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

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


Sam sobie odpowiedziałeś smile.gif

Cytat
Po prostu, aby omijał ten wiersz, i kontynuował dalej.


  1. for($i=0;$i<10;$i++) {
  2. if($i==5) continue;
  3. echo $i;
  4. }


Wyswietli od 0 do 9 bez 5 smile.gif

//spóźniona odpowiedz. smile.gif

Ten post edytował aras785 29.01.2013, 15:43:58
Go to the top of the page
+Quote Post
tolomei
post
Post #5





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

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


Cytat(aras785 @ 29.01.2013, 16:42:43 ) *
  1. for($i=0;$i<10;$i++) {
  2. if($i==5) continue;
  3. echo $i;
  4. }


A taki kod jest antywzorcem. Dodajemy klamerki przy if-ie. Może ktoś będzie musiał pracować nad Twoim kodem w przyszłości. Warto dbać o przejrzystość.


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
Go to the top of the page
+Quote Post
aras785
post
Post #6





Grupa: Zarejestrowani
Postów: 859
Pomógł: 177
Dołączył: 29.10.2009

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


Cytat(tolomei @ 29.01.2013, 15:47:30 ) *
A taki kod jest antywzorcem. Dodajemy klamerki przy if-ie. Może ktoś będzie musiał pracować nad Twoim kodem w przyszłości. Warto dbać o przejrzystość.


Według mnie to jest bardziej przejrzyste niż z klamrami smile.gif
Go to the top of the page
+Quote Post
ratosluaf
post
Post #7





Grupa: Zarejestrowani
Postów: 91
Pomógł: 4
Dołączył: 14.10.2012

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


A czy nie powinienem użyć czegoś takiego:
  1. if(strpos($gracz,'wykluczony') !== true)
  2. {
  3. instrukcja
  4. }
Go to the top of the page
+Quote Post
kristaps
post
Post #8





Grupa: Zarejestrowani
Postów: 279
Pomógł: 36
Dołączył: 1.03.2012

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


Pytasz o strpos? Poco chcesz przeszukiwać ciąg znaków w stringu? Skoro:

  1. $results['serwer']['players'][$i][score]
odpowiada tylko aktualnie pobieranemu nickowi?
Go to the top of the page
+Quote Post
tolomei
post
Post #9





Grupa: Zarejestrowani
Postów: 450
Pomógł: 135
Dołączył: 18.11.2010
Skąd: Wschowa

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


@ratosluaf - Twój warunek zawsze będzie prawdziwy. Pomyśl dlaczego smile.gif


--------------------
“ Computers are good at following instructions, but not at reading your mind. ”
- Donald Knuth
Go to the top of the page
+Quote Post
ratosluaf
post
Post #10





Grupa: Zarejestrowani
Postów: 91
Pomógł: 4
Dołączył: 14.10.2012

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


  1. if($gracz != 'wykluczony')
  2. {
  3. echo "<td>".$gracz."</td><td>".$results['serwer']['players'][$i][score]."</td><td>".$hms."</td></tr>";
  4. }

Nie działa.
  1. if(strpos($gracz,'wykluczony') != true)
  2. {
  3. echo "<td>".$gracz."</td><td>".$results['serwer']['players'][$i][score]."</td><td>".$hms."</td></tr>";
  4. }

Działa.
Sądzę, że pierwszy sposób działałby, jeżeli osoba miała by nick "wykluczony", a nie frazę w nicku "wykluczony".

Ten post edytował ratosluaf 29.01.2013, 17:12:18
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 07:28