Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]przeszukiwanie tablicy wielowymiarowej
Forum PHP.pl > Forum > Przedszkole
john_doe
chce przeszukać tablice i zwrocic wart = 1 gdy znajde i 0 gdy nie
napisałem taką funkcję i już myślałem, że działa bo po wstawieniu do zmiennej $t = 1
funkcja zwraca 1 ale gdy wstawie cokolwiek innego zwraca 0. Dla dwójki też zero a jest w tablicy

  1. <?php
  2. $t = 1;
  3.  
  4. $tab['koszyk'][1] = array('id' => 1, 'ile' => 55);
  5. $tab['koszyk'][2] = array('id' => 2, 'ile' => 555);
  6.  
  7.  
  8. function searchIt($co, $tablica){
  9.    
  10.    foreach($tablica as $klucz)
  11.    {
  12.        $search = array_search($co, $klucz);
  13.        
  14.        if (strlen($search) > 0)
  15.        {
  16.            return 1;
  17.        }else return 0;
  18.    }
  19.  
  20. }
  21.  
  22. print searchIt($t, $tab['koszyk']);
  23. ?>
Pawel_W
  1. <?php
  2. $t = 1;
  3.  
  4. $tab['koszyk'][1] = array('id' => 1, 'ile' => 55);
  5. $tab['koszyk'][2] = array('id' => 2, 'ile' => 555);
  6.  
  7.  
  8. function searchIt($co, $tablica){
  9.  
  10.   for($i=0;$i<count($tablica);$i++)
  11.   {
  12.       $search = array_search($co, $tablica[$i]);
  13.      
  14.       if (strlen($search) > 0)
  15.       {
  16.           return 1;
  17.       }
  18.       else
  19.       return 0;
  20.   }
  21.  
  22. }
  23.  
  24. print searchIt($t, $tab['koszyk']);
  25. ?>
sproboj tak
john_doe
niestety teraz w ogóle zawsze zwraca 0
piotrooo89
  1. <?php
  2. $t = 55;
  3.  
  4. $tab['koszyk'][1] = array('id' => 1, 'ile' => 55);
  5. $tab['koszyk'][2] = array('id' => 2, 'ile' => 555);
  6.  
  7.  
  8. function searchIt($co, $tablica)
  9. {
  10.    foreach($tablica as $klucz)
  11.    {
  12.        foreach($klucz as $key)
  13.        {
  14.            if ($key == $co)
  15.            {
  16.                echo 'ok';
  17.            }
  18.            else
  19.            {
  20.                echo 'nie';
  21.            }
  22.        }
  23.    }
  24. }
  25.  
  26. print searchIt($t, $tab['koszyk']);
  27. ?>


a coś takiego?
john_doe
piotroo już myślałem, że zakosi ale zmieniłem Twoje echo na return 1 i 0
i.... efekt jest ten sam jak w moim post`ie na początku

print searchIt($t, $tab['koszyk']);

dla $t=1 funkcja zwraca 1
dla $t=1 funkcja zwraca 0 i tu jest źle

chce szukać po id
behu
  1. <?php
  2. function searchIt($co,$tablica) {
  3.    foreach($tablica as $klucz=>$wartosc) {
  4.        if($co==$wartosc || (is_array($wartosc) && searchIt($co,$wartosc) !== false)) {
  5.            return 1;
  6.        }
  7.    }
  8.    return false;
  9. }
  10. ?>
john_doe
calussio jest ok juuuuhuuuu smile.gif.
Ale jak testowałem to wychodzi na to, że funkcja ta szuka po wszystkich wartościach w tablicy. A ja chce po id.
behu
wystarczy dodać jeden warunek

  1. <?php
  2. function searchIt($co,$tablica)
  3. {
  4.   foreach($tablica as $klucz=>$wartosc){
  5.      if(($klucz=='id' && $co==$wartosc) || (is_array($wartosc) && searchIt($co,$wartosc) !== false)){
  6.         return 1;
  7.      }
  8.   }
  9.   return false;
  10. }
  11. ?>
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.