Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php]in_array
Regyam
post
Post #1





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 8.04.2007

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


mam tablice dwuwymiarowa 10x10 i chce sprawdzic czy wartość np koniec jest w tablicy:
  1. <?php
  2. if (in_array("koniec", $tablica)) {
  3. echo "koniec";
  4. }
  5. ?>

poniewaz struktura mojej tabeli moze wygladac tak:
  1. Array
  2. (
  3. [1] => Array
  4. (
  5. [1] => 0
  6. ............
  7. ............
  8. [10] => 0
  9. )
  10.  
  11. [2] => Array
  12. (
  13. [1] => 0
  14. [2] => 0
  15. ............
  16. ............
  17. [9] => koniec
  18. [10] => 0
  19.  
  20. )
  21. ............
  22. ............
  23. ............
  24. )

I oczywiste ze niemozliwe jest zeby wyswietlilo nam koniec tongue.gif bo wyszukuje to w pierwszych indeksach.
Moj kod działa tylko na jednowymiarówke, więc jak go zmienić w miare najprostszy sposób aby działał on na dwuwymiarówke jaką mam?

Ten post edytował Regyam 4.12.2007, 19:34:36
Go to the top of the page
+Quote Post
kicaj
post
Post #2





Grupa: Zarejestrowani
Postów: 1 640
Pomógł: 28
Dołączył: 13.02.2003
Skąd: Międzyrzecz/Poznań

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


Zastosowac petle?


--------------------
PHP Developer

"Nadmiar wiedzy jest równie szkodliwy jak jej brak" Émile Zola
Go to the top of the page
+Quote Post
Regyam
post
Post #3





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 8.04.2007

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


napisałem najprostszy sposob bo myslalem ze taki jest, jesli nie ma no to w ostatecznosci moge ta petle wkoncu zastosowac tongue.gif
Jednak z ta petla nie za bardzo:
  1. <?php
  2. for ($i; $i<=10; $i++){
  3. if (in_array("koniec", $odpowiedzi[$i])) {
  4. echo "koniec";
  5. }
  6. }
  7. ?>

wypisuje blad: Warning: in_array() [function.in-array]: Wrong datatype for second argument in..

Ten post edytował Regyam 4.12.2007, 20:10:58
Go to the top of the page
+Quote Post
-swierkdeck-
post
Post #4





Goście







Może tak?

  1. <?php
  2. for ($i=0; $i<=2; $i++){
  3.  if (in_array("koniec", $odpowiedzi[$i]))
  4.  {
  5. echo "koniec";
  6.  }
  7. }
  8. ?>
Go to the top of the page
+Quote Post
Regyam
post
Post #5





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 8.04.2007

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


ahh przeciez nie podalem ze $i=1 i dlatego blad;/
Go to the top of the page
+Quote Post
nevt
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


a może tak rekurencyjnie? będzie ci działać na tablicy o dowolnej strukturze i liczbie wymiarów:
  1. <?php
  2. function in_array_recursive($find, $array)
  3. {
  4. foreach($array as $value)
  5. if(is_array($value))
  6. if(in_array_recursive($find, $value))
  7. return TRUE;
  8. else;
  9. elseif($value == $find)
  10. return TRUE;
  11. return FALSE;
  12. }
  13. ?>


pozdrawiam

Ten post edytował nevt 5.12.2007, 08:20:59


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
Regyam
post
Post #7





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 8.04.2007

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


Fatal error: Cannot redeclare in_array_recursive() (previously declared in xxx:69) in xxx on line 69, ta linia to poczatek nazwy funkcji
Go to the top of the page
+Quote Post
nevt
post
Post #8





Grupa: Przyjaciele php.pl
Postów: 1 595
Pomógł: 282
Dołączył: 24.09.2007
Skąd: Reda, Pomorskie.

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


niemożliwe - testowałem przed wklejeniem na forum - musisz jakoś źle używać - pokaż swój kod...

EDIT: dla pewności skopiowałem z powrotem i spawdziłem jeszcze raz - wszystko jest ok...
tu masz kod z przykładem użycia:
  1. <?php
  2. function in_array_recursive($find, $array)
  3. {
  4. foreach($array as $value)
  5. if(is_array($value))
  6. if(in_array_recursive($find, $value))
  7. return TRUE;
  8. else;
  9. elseif($value == $find)
  10. return TRUE;
  11. return FALSE;
  12. }
  13.  
  14. $x = array(1, 2, array(3, 4, array(5, 6)));
  15.  
  16. $y = 3;
  17. $z = in_array_recursive($y, $x) ? 'JEST' : 'NIE MA';
  18.  
  19. echo "$y $z!";
  20.  
  21. $y = 7;
  22. $z = in_array_recursive($y, $x) ? 'JEST' : 'NIE MA';
  23.  
  24. echo "$y $z!";
  25. ?>


Ten post edytował nevt 5.12.2007, 13:52:19


--------------------

-
Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... -
Go to the top of the page
+Quote Post
Regyam
post
Post #9





Grupa: Zarejestrowani
Postów: 79
Pomógł: 0
Dołączył: 8.04.2007

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


no jest ok, a jak to połączyć żeby wyszukiwało dwa elementy z tej jednej tablicy? i zwracało że jest gdy przynajmniej jeden z elementów?
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 Aktualny czas: 22.08.2025 - 03:50