Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Filtrowanie tablicy.
Yuri20
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 13.07.2010

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


Otóż mam taki skrypcik, który ma filtrować tablicę tak, aby za każdym razem zwracała najwyższy wynik, ale za każdym przebiegiem pętli ma wyłączać z filtorwania wynik, który ostatnio był najwyższy.

  1. $byly = array();
  2. $top=0;$topKlucz;
  3. for($i=0;$i<count($staty);$i++){
  4. foreach($staty as $klucz=>$wartosc){
  5. if(!in_array($klucz, $byly))
  6. if($wartosc['ekonomia'] > $top){
  7. $top = $wartosc['ekonomia'];
  8. $topKlucz = $klucz;
  9.  
  10. }
  11. }
  12. $byly[] = $topKlucz;
  13. }


Niestety powyższy skrypt za każdy razem zwraca ten sam wynik jako najwyższy (3 razy, ponieważ pętla for przebiega 3 razy).
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Yuri20
post
Post #2





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 13.07.2010

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


Nie mogę usunąć pętli for, ponieważ chcę aby pętla foreach za każdym razem zwracała inny wynik najwyższy (maksymalnie mało mniejszy od ostatniego), a tymczasem zwracany jest cały czas ten sam wynik, ponieważ jakoś in_array zawodzi. Gdyby działał jak trzeba, to wynik ostatnio sprawdzony byłby wykluczany.... :<

EDIT:
Na potrzeby przenalizowania co jest nie tak, skróciłem kod do takiej formy:

  1. for($i=0;$i<count($staty);$i++){
  2.  
  3. foreach($staty as $klucz=>$wartosc){
  4. if($wartosc['ekonomia'] > $top){
  5. $top = $wartosc['ekonomia'];
  6. $topKlucz = $klucz;
  7. echo $top;
  8.  
  9. }
  10. }
  11. $staty[$topKlucz]['ekonomia'] = null;
  12.  
  13. }


Czyli po pierwszym foreachu wyprowadzana jest najwyższa wartość w pierwszym przebiegu pętli for. Dlatego ustalam $staty[$topKlucza]['ekonomia'] na null, żeby przy najstępnym foreachu już ta wartośc nie była sprawdzana. A co się dzieje? Kolejne dwa foreache praktycznie nie działają, i zwracany jest najwyższy wynik po pierwszym foreachu, a potem nic. Tablica $staty wygląda tak:

$staty = array(25,0,2).

Ten post edytował Yuri20 16.04.2012, 19:44:09
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 12.10.2025 - 12:15