Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]foreach - ma wystąpić tylko RAZ
Forum PHP.pl > Forum > Przedszkole
casperii
Panowie głupio się przyznać ale nie wiem jak ugryźć by wystąpienie danego słowa było tylko RAZ :

  1. foreach ($tablica as $var => $val){
  2.  
  3. echo $val['imie'];
  4.  
  5. foreach ($val['qq'] as $row){
  6. echo $row['lubi'];
  7. }
  8. }


i teraz chcę by imie jeśli w kolenym pętleniu wystąpiło już wcześniej to , żeby przeskakiwało aż będzie kolejne wcześniej nie wyechowane imie.
Nie wiem czy dobrze kombinuje, chyba trzeba by było wstawiać do tablicy i później sprawdzać z każdym pętleniem czy istnieje w tablicy ?
trueblue
Musisz sprawdzać czy aktualnie przetwarzane imię jest takie samo jako poprzednie. Jeśli takie samo, to nie drukujesz, jeśli inne, to drukujesz i ustawiasz aktualne jako poprzednie.
Poprzednie imię przechowujesz w zmiennej.
casperii
@trueblue czyli, że to by leciało tak:

$jakMaszNaimie = $val['imie'];
if($jakMaszNaimie == $val['imie'])
{
echo $val['imie'];
}else{

$jakMaszNaimie = $val['imie'];

}
trueblue
A patrzyłeś czy działa? Bo mi się wydaje, że ten kod jest zupełnie bezużyteczny.
casperii
własnie sprawdziłem i nie cyka
Neutral
Napisz instrukcję warunkową if i później w ciele ifa, napisz mniej więcej tak continue 2; lub continue 1; zależnie od tego, którą pętlę chcesz przeskoczyć zewnętrzną, czy wewnętrzną.
Tomplus
Spójrz na to proste rozwiązanie. Tworzysz specjalny kontener czyli tablicę $imieIstnieje a następinie sprawdzasz funkcją in_array() czy dane imię jest już w tablicy, jeżeli jest to nie wykonujesz funkcji. Dodatkowo od razu dodajesz nowe imię do tablicy używają najlepiej array_push()


  1. $imieIstnieje = [];
  2. foreach($tablica as $k=>$val) {
  3. if (!in_array($val['imie'], $imieIstnieje)) {
  4. echo $val['imie'].'<br>';
  5. array_push($imieIstnieje, $val['imie']);
  6. }
  7.  
  8. }


z resztą sobie poradzisz.
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.