Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]przeszukiwanie tablicy wielowymiarowej
john_doe
post 27.06.2009, 15:53:40
Post #1





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

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


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


Ten post edytował john_doe 27.06.2009, 15:54:39
Go to the top of the page
+Quote Post
Pawel_W
post 27.06.2009, 15:58:01
Post #2





Grupa: Zarejestrowani
Postów: 1 675
Pomógł: 286
Dołączył: 15.06.2009
Skąd: Wieliczka

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


  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
Go to the top of the page
+Quote Post
john_doe
post 27.06.2009, 16:03:11
Post #3





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

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


niestety teraz w ogóle zawsze zwraca 0
Go to the top of the page
+Quote Post
piotrooo89
post 27.06.2009, 16:16:47
Post #4


Newsman


Grupa: Moderatorzy
Postów: 4 005
Pomógł: 548
Dołączył: 7.04.2008
Skąd: Trzebinia/Kraków




  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?


--------------------
Go to the top of the page
+Quote Post
john_doe
post 27.06.2009, 16:30:15
Post #5





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

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


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
Go to the top of the page
+Quote Post
behu
post 27.06.2009, 16:40:54
Post #6





Grupa: Zarejestrowani
Postów: 52
Pomógł: 16
Dołączył: 8.08.2008
Skąd: London

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


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


Ten post edytował collusio 27.06.2009, 16:42:58


--------------------
Freelancer - [C#, PHP, MySQL, xHTML, CSS]
michal.schweichler [at] gmail.com
http://www.elance.com/s/michal_schweichler/
Go to the top of the page
+Quote Post
john_doe
post 27.06.2009, 16:48:16
Post #7





Grupa: Zarejestrowani
Postów: 873
Pomógł: 25
Dołączył: 24.07.2005

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


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.

Ten post edytował john_doe 27.06.2009, 16:48:36
Go to the top of the page
+Quote Post
behu
post 27.06.2009, 17:50:11
Post #8





Grupa: Zarejestrowani
Postów: 52
Pomógł: 16
Dołączył: 8.08.2008
Skąd: London

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


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


Ten post edytował collusio 27.06.2009, 17:58:05


--------------------
Freelancer - [C#, PHP, MySQL, xHTML, CSS]
michal.schweichler [at] gmail.com
http://www.elance.com/s/michal_schweichler/
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 30.06.2025 - 07:57