Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Filtrowanie tablicy
Forum PHP.pl > Forum > Przedszkole
nansss93
Witam,

Chce przefiltrować tablicę pod względem wartości.
Kod:

  1. $result6 = array_filter($result5, array($this,'checkImpressions'));
  2. protected function checkImpressions($array){
  3. foreach($array as $key => $data){
  4. if($data[4]!=''){
  5. if($data[4]<=20){
  6. return false;
  7. } else {
  8. return true;
  9. }
  10. }
  11. elseif($data[5]!=''){
  12. if($data[5]<=20){
  13. return false;
  14. } else {
  15. return true;
  16. }
  17. } else {
  18. return false;
  19. }
  20. }
  21. return true;
  22. }


Jednak w wyniku tego na końcu otrzymuje wartości gdzie $data[5] jest na przykład równa 0, a nie powinienem.
Gdzie popełniłem błąd?
Pyton_000
Pokaż wejście i wyjście
nansss93
Dane są bardzo rozbudowane, ale są w takiej postaci:

Kod
[RON8-Se-SON-1.6] => Array
        (
            [2] => Array
                (
                    [0] => 1
                    [1] => RON8-Se-SON-1.6-Lv0.8
                    [2] => RON8-Se-SON-1.6
                    [3] => LV00.8
                    [4] =>
                    [5] => 2309
                )

            [1] => Array
                (
                    [0] => 2
                    [1] => RON8-Se-SON-1.6-Lv0.8
                    [2] => RON8-Se-SON-1.6
                    [3] => LV00.8
                    [4] =>
                    [5] => 2309
                )

            [0] => Array
                (
                    [0] => 3
                    [1] => RON8-Se-SON-1.6-Lv0.9
                    [2] => RON8-Se-SON-1.6
                    [3] => LV00.9
                    [4] =>
                    [5] => 1990
                )

            [3] => Array
                (
                    [0] => 4
                    [1] => RON8-Se-SON-1.6-Lv0.9
                    [2] => RON8-Se-SON-1.6
                    [3] => LV00.9
                    [4] =>
                    [5] => 0
                )

        )
trzczy
Prawdopodobnie ten warunek nie odpowiada temu elementowi $data[4] tablicy, gdzie wartość jest w ogóle nie przypisana
  1. $data[4]!=''

Czyli pusty string to nie to samo co brak wartości.
nansss93
Dzięki za podpowiedź.
Udało mi się poprawić.
return true wyrzucał w złym momencie na mój skrypt.
Poprawne:
  1. protected function checkImpressions($array){
  2. foreach($array as $key => $data){
  3. if($data[4]!=''){
  4. if($data[4]<=20){
  5. return false;
  6. }
  7. }
  8. elseif($data[5]!=''){
  9. if($data[5]<=20){
  10. return false;
  11. }
  12. } else {
  13. return false;
  14. }
  15. }
  16. return true;
  17. }
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.