Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Przeszukiwanie tablicy
proxy
post
Post #1





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 6.01.2009

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


Jak znaleźć wartość superwartosc w tej tablicy?

  1. $zmienna = array
  2. (
  3. 1=>array
  4. (
  5. 1=>array('klucz1'=>'wartosc1','klucz2'=>'wartosc2'),
  6. 2=>array('klucz1'=>'wartosc1','klucz2'=>'wartosc2')
  7. ),
  8. 2=>array
  9. (
  10. 1=>array('klucz1'=>'wartosc1','klucz2'=>'superwartosc'),
  11. 2=>array('klucz1'=>'wartosc1','klucz2'=>'wartosc2')
  12. )
  13.  
  14. .
  15. .
  16. .
  17. .
  18. 990=>array ( ... )
  19. );


Muszę po prostu wiedzieć, że taka wartość istnieje w tablicy. Próbowałem in_array, array_search i coś nie bardzo.
Pojedyncze przeszukiwanie tablicy odpada bo w tablicy będzie około 1000 kluczy (tych głównych).

Jakieś pomysły?
Go to the top of the page
+Quote Post
lukaskolista
post
Post #2





Grupa: Zarejestrowani
Postów: 872
Pomógł: 94
Dołączył: 31.03.2010

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


pierwsze 2 poziomy tablicy przelec petlami, a 3 jakas funkcja, np in_array()
Go to the top of the page
+Quote Post
proxy
post
Post #3





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 6.01.2009

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


Będzie około 1000 takich podtablic:

  1. 1=>array
  2. (
  3. 1=>array('klucz1'=>'wartosc1','klucz2'=>'wartosc2'),
  4. 2=>array('klucz1'=>'wartosc1','klucz2'=>'wartosc2')
  5. ),


a to wszystko w jednej tablicy...
Go to the top of the page
+Quote Post
Quadina
post
Post #4





Grupa: Zarejestrowani
Postów: 200
Pomógł: 38
Dołączył: 1.12.2010
Skąd: Wrocław

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


Tak czy inaczej musisz przez te pętle po prostu przejść. Proponuje coś takiego:

  1. function znajdz($tablica,$coszukam){
  2. foreach($tablica as $a=>$v1){
  3. foreach($v1 as $b=>$v2){
  4. foreach($v2 as $c=>$v3){
  5. if($v3==$coszukam)return array($a,$b,$c);
  6. }
  7. }
  8. }
  9. return null;
  10. }

Funkcja zwroci ci tablice indeksow kolejnych zaglebien albo null jak nie znajdzie.
Go to the top of the page
+Quote Post
proxy
post
Post #5





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 6.01.2009

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


Pomyliłem się...

tablica ma wyglądać tak:

  1. (
  2. [1] => Array
  3. (
  4. [klucz1] => wartosc1
  5. [klucz2] => wartosc2
  6. [klucz3] => wartosc3
  7. [klucz4] => wartosc4
  8. )
  9. [2] => Array
  10. (
  11. [klucz1] => wartosc1
  12. [klucz2] => wartosc2
  13. [klucz3] => superwartosc
  14. [klucz4] => wartosc4
  15. )
  16. )


Mógłbyś mi ułożyc funkcję pod to?

Próbuje tak:

  1. function znajdz($tablica,$coszukam){
  2. foreach($tablica as $a=>$v1){
  3. foreach($v1 as $b=>$v2){
  4. if($v2==$coszukam)return array($a,$b);
  5. }
  6. }
  7. return null;
  8. }


I nie bardzo...
Go to the top of the page
+Quote Post
Pawel_W
post
Post #6





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

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


czytaj komentarze pod array_search, tam masz kilka funkcji do przeszukiwania tablic wielowymiarowych
Go to the top of the page
+Quote Post

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: 20.09.2025 - 03:40