Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Porównywanie wielu tablic
marcok
post 20.07.2009, 11:57:39
Post #1





Grupa: Zarejestrowani
Postów: 26
Pomógł: 8
Dołączył: 15.10.2008
Skąd: Wrocław

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


Witam, mam pewnien problem ze stworzeniem skryptu, który dla każdego elementu tablicy zwróci index tablicy w której występuje.


Tablica:

[kolory1]
     [0] => czerwony
     [1] => czarny
     [2] => bialy
     [3] => zielony
[kolory2]
     [0] => zielony
     [1] => niebieski
     [2] => bialy
     [3] => czerwony
[kolory3]
     [0] => bialy
     [1] => czerwony
     [2] => czarny
[kolory4]
     [0] => czerwony

a efekt na ktorym mi zalezy to:

czerwony jest w [kolory1], [kolory2], [kolory3], [kolory4]
czarny jest w [kolory1], [kolory3]
bialy jest w [kolory1], [kolory2], [kolory3]
zielony jest w [kolory1], [kolory2]
niebieski jest w [kolory2]

próbowałem z array_diff i pętlami, ale mi nie wychodzi  wstydnis.gif
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
erix
post 20.07.2009, 12:07:16
Post #2





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




Pętla + in_array" title="Zobacz w manualu PHP" target="_manual.


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
tmka
post 20.07.2009, 12:08:00
Post #3





Grupa: Zarejestrowani
Postów: 27
Pomógł: 9
Dołączył: 9.02.2009

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


Spróbuj tak: połącz wszystkie tablice w jedna i przejdź przez nią foreach'em sprawdzając czy dana wartość jest w którejś z tablic funkcją array_search(zwróci ci klucz, jeżeli znajdzie element w danej tablicy).
Go to the top of the page
+Quote Post
marcok
post 20.07.2009, 14:08:15
Post #4





Grupa: Zarejestrowani
Postów: 26
Pomógł: 8
Dołączył: 15.10.2008
Skąd: Wrocław

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


niestety dalej nie mam pojęcia jak to zrobić  sciana.gif
Go to the top of the page
+Quote Post
sowiq
post 20.07.2009, 14:11:12
Post #5





Grupa: Zarejestrowani
Postów: 1 890
Pomógł: 339
Dołączył: 14.12.2006
Skąd: Warszawa

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


http://us2.php.net/manual/pl/function.in-array.php
Cytat
Sprawdza czy wartość istnieje w tablicy

bool in_array ( mixed $igła , array $stóg_siana [, bool $ścisłe ] )

Przeszukuje stóg_siana w poszukiwaniu parametru igła i zwraca TRUE jeśli wartość została znaleziona lub FALSE w przeciwnym przypadku.

  1. <?php
  2. $os = array("Mac", "NT", "Irix", "Linux");
  3. if (in_array("Irix", $os)) {
  4.    echo "Znaleziono Irix";
  5. }
  6. if (in_array("mac", $os)) {
  7.    echo "Znaleziono mac";
  8. }
  9. ?>


Czego nie rozumiesz?

Ten post edytował sowiq 20.07.2009, 14:12:04
Go to the top of the page
+Quote Post
erix
post 20.07.2009, 14:27:37
Post #6





Grupa: Moderatorzy
Postów: 15 467
Pomógł: 1451
Dołączył: 25.04.2005
Skąd: Szczebrzeszyn/Rzeszów




...i to w pętle, oczywiście, żeby przeszukać wielowymiarowo [;


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

ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW!
Go to the top of the page
+Quote Post
marcok
post 20.07.2009, 15:12:04
Post #7





Grupa: Zarejestrowani
Postów: 26
Pomógł: 8
Dołączył: 15.10.2008
Skąd: Wrocław

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


o ile to: (oczywiscie tablica jak w pierwszym poscie)

  1. <?php
  2. $xx = explode('|', 'kolory1|kolory2|kolory3|kolory4');
  3.  
  4. for($i = 0; $i < count($xx); $i++) {
  5. if(in_array("czarny", $xxx[$xx[$i]])) {echo "\"czarny\" Znaleziono w [".$xx[$i]."] ";}
  6. }
  7.  
  8.  
  9.  
  10. //wyswietli "czarny" Znaleziono w [kolory1] "czarny" Znaleziono w [kolory3] 
  11. ?>


rozumiem. To ze zrobieniem tego dla wszystkich elementow juz mam problem  blinksmiley.gif
Go to the top of the page
+Quote Post
Wicepsik
post 20.07.2009, 15:22:15
Post #8





Grupa: Zarejestrowani
Postów: 1 575
Pomógł: 299
Dołączył: 26.03.2009

Ostrzeżenie: (20%)
X----


Poczytaj o pętli foreach" title="Zobacz w manualu PHP" target="_manual


--------------------
Go to the top of the page
+Quote Post
skowron-line
post 20.07.2009, 15:24:40
Post #9





Grupa: Zarejestrowani
Postów: 4 340
Pomógł: 542
Dołączył: 15.01.2006
Skąd: Olsztyn/Warszawa

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


jeżeli chodzi o przeszukiwanie tablicy wielowymiarowej to warto w komentarzach funkcji in_array poszukać.
in_multi_array


--------------------
I'm so fast that last night I turned off the light switch in my hotel room and was in bed before the room was dark - Muhammad Ali.
Peg jeżeli chcesz uprawiać sex to dzieci muszą wyjść, a jeżeli chcesz żeby był dobry ty też musisz wyjść - Al Bundy.

QueryBuilder, Mootools.net, bbcradio1::MistaJam
http://www.phpbench.com/
Go to the top of the page
+Quote Post
marcok
post 22.07.2009, 13:16:24
Post #10





Grupa: Zarejestrowani
Postów: 26
Pomógł: 8
Dołączył: 15.10.2008
Skąd: Wrocław

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


Jednak to nie było takie trudne tongue.gif dla zainteresowanych kod:

  1. <?php
  2.  
  3. $array = array(
  4. 'kolory1' => array(
  5. 0 => 'czerwony',
  6. 1 => 'czarny',
  7. 2 => 'bialy',
  8. 3 => 'zielony'
  9. ),
  10. 'kolory2' => array(
  11. 0 => 'zielony',
  12. 1 => 'niebieski',
  13. 2 => 'bialy',
  14. 3 => 'czerwony'
  15. ),
  16. 'kolory3' => array(
  17. 0 => 'czarny',
  18. 1 => 'czerwony',
  19. 2 => 'bialy'
  20. ),
  21. 'kolory4' => array(
  22. 0 => 'czerwony',
  23. 1 => 'bialy'
  24. )
  25. );
  26. $all = array();
  27. $name = explode('|', 'kolory1|kolory2|kolory3|kolory4');
  28.  
  29. for($i = 0; $i < count($name); $i++) {
  30.  
  31. for($c = 0; $c < count($array[$name[$i]]); $c++) {
  32. if(!in_array($array[$name[$i]][$c], $all)) 
  33. {
  34. $all[] = $array[$name[$i]][$c];
  35. $all2[] = $array[$name[$i]][$c].' ['.$name[$i].']';
  36. } 
  37.  
  38. else {$all2[array_search($array[$name[$i]][$c],  $all)] .= ' ['.$name[$i].']';}
  39.  
  40. }
  41. echo "\n";
  42. }
  43.  
  44. print_r($all2);
  45. ?>


wynik: 

Array
(
  [0] => czerwony [kolory1] [kolory2] [kolory3] [kolory4]
  [1] => czarny [kolory1] [kolory3]
  [2] => bialy [kolory1] [kolory2] [kolory3] [kolory4]
  [3] => zielony [kolory1] [kolory2]
  [4] => niebieski [kolory2]
)



===

Dziękuję zainteresowanym za pomoc.
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: 13.08.2025 - 22:55