Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wykluczenia z pętli.
Forum PHP.pl > Forum > PHP
ratosluaf
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
tolomei
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.
kristaps
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
aras785
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
tolomei
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ść.
aras785
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
ratosluaf
A czy nie powinienem użyć czegoś takiego:
  1. if(strpos($gracz,'wykluczony') !== true)
  2. {
  3. instrukcja
  4. }
kristaps
Pytasz o strpos? Poco chcesz przeszukiwać ciąg znaków w stringu? Skoro:

  1. $results['serwer']['players'][$i][score]
odpowiada tylko aktualnie pobieranemu nickowi?
tolomei
@ratosluaf - Twój warunek zawsze będzie prawdziwy. Pomyśl dlaczego smile.gif
ratosluaf
  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".
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.