Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] Pętla for();
Forum PHP.pl > Forum > PHP
Mappet
  1. <?php
  2. foreach($_POST['del'] as $linia)
  3. {
  4. $num1 = explode('|~|', $fp1[$linia]);
  5. $dd[] = $num1[3];
  6. unset($oldData[$linia]);
  7. }
  8.  
  9. $num2 = explode('|~|', chop($fp2[0]));
  10.  
  11. for($i=0; $i<count($dd); $i++)
  12. {
  13. for($q=0; $q<count($num2); $q++)
  14. {
  15. if($dd[$i] == $num2[$q]) echo $dd[$i];
  16. }
  17. }
  18. ?>


Jak moge napisać prawidłowy algorytm pętli dla zmiennych $dd i $num... każda ma inną liczbę kluczy i nie wiem jak to zrobić...bo jedna pętla nie wystarczy. Dla przykładu zmienna $i = od 0 do 3, a $q = od 0 do 6... i jak to zrobić własnie by to zadziałało, raczej trza dwię indywidualne pętle zrobić...
Lukasz Luczak
A może byś napisał jaki format mają dane wejściowe i co chciałbyś uzyskać ?

A najlepiej gdybyś to dokładniej opisać bo pochmurno za oknem jest i nie mogę z gwiazd nic odczytać winksmiley.jpg
Mappet
Tak więc problem wygląda następująco...

Mam sobie plik z newsami - 'news.dat'. Każdy news ma swoje ID. Newsy zapisuję w takiej postaci:
Kod
tytul|~|tresc|~|data|~|ID
tytul|~|tresc|~|data|~|9
tytul|~|tresc|~|data|~|8
tytul|~|tresc|~|data|~|7
tytul|~|tresc|~|data|~|5

Dodatkowo znajduje się także drugi plik 'news_show.dat' który przechowuje ID newsa, który ma być wyświetlony na stronie. Zapisuję je tak:
Kod
9|~|8|~|4|~|2|~|1|~|0

Mamy dajmy na to 20 newsów a ja chce wyświetlić z nich tylko 14 -> więc zapisuję do pliku 'news_show' ID wybranego pliku -> Teraz przy wyświetlaniu porównuję dwie zmienne, jedna z jednego pliku druga z drugiego. Jeżeli ID z 'news_show' równa się ID z pliku 'news' to oznacza że dany news wyświetlamy. Więc tak wygląda mój problem - chcę porównać dwie zmienne ale coś nie chce się mnie słuchać skrypcik. Używałem także in_array...
Misiek
  1. <?php
  2.  
  3. $news_show = fopen (&#092;"news_show.dat\", \"r\");
  4. $z_show = fgets ($news_show, file_size($news_show));
  5.  
  6. $news = file (&#092;"news.dat\", \"r\");
  7. $ile1 = count ($news);
  8.  
  9. $wyswietl = explode ('|~|', $z_show);
  10. $ile2 = count ($wyswietl);
  11.  
  12. for ($i=0; $i<$ile1; $i++) {
  13.    $wszystkie = explode ('|~|', chop($news[$i]));
  14.    $wypisac = 0;
  15.    for ($a=0; $a<$ile2; $a++) {
  16.       if ($wszystkie [3] == $wyswietl[$a]) {
  17.          $wypisac = 1;
  18.       }
  19.    if ($wypisac == 1) {
  20.       print $wyswietl [0].$wyswietl [1].$wyswietl [2]; //czy jak tam chcesz
  21.    }
  22.    }
  23. }
  24.  
  25. ?>


Nie sprawdzałem, ale powinno działać. Może trochę mało wydajne, ale jest...
W tym skrypcie nie blokowałem plików.

Pozdrawiam
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.