Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Łączenie kilku tabel
Micchaleq
post
Post #1





Grupa: Zarejestrowani
Postów: 186
Pomógł: 4
Dołączył: 13.10.2009

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


Witam,

Znów dla niektórych zapewne prosty przykład, ja jednak już trochę się z tym męczę.
Mam dwie tabele
  1. $kolor => array(
  2. 'biały', 'czerwony'
  3. );
  4. $rozmiar => array(
  5. '37', '38'
  6. );
  7. )


Chciałbym połączyć te tabele tak by każdy kolor zawierał każdy rozmiar.
Efekt ma być mniejwięcej taki

  1. $tabele = array(
  2. 'bialy' => array(37,38),
  3. 'czerwony' => array(37,38)
  4. )


Dodam, że nie chodzi mi o to by ręcznie sobie to podmienić bo widać jak to można zrobić, chodzi mi bardziej o automaty jeżeli będzie kilkanaście tabel aby stworzyło się całe drzewo.
Mam dziś problemy z myśleniem więc czy ktoś może podpowiedzieć mi czy jest coś w wachlarzy funkcji wbudowanych w PHP?

Ewentualnie posiada ktoś taką funkcyjkę i się podzieli?
Go to the top of the page
+Quote Post
kreatiff
post
Post #2





Grupa: Zarejestrowani
Postów: 324
Pomógł: 105
Dołączył: 7.08.2012

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


Foreach $kolor stwórz tablicę $tabele[$kolor] = $rozmiar.

Ten post edytował kreatiff 5.06.2015, 11:32:17
Go to the top of the page
+Quote Post
rad11
post
Post #3





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

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


  1. $kolor = array(
  2. 'biały', 'czerwony'
  3. );
  4. $rozmiar = array(
  5. '37', '38'
  6. );
  7. $merge = array();
  8.  
  9. foreach($kolor as $key => $value){
  10.  
  11. $merge[$value] = $rozmiar;
  12.  
  13. }
  14.  
  15. var_dump($merge);
Go to the top of the page
+Quote Post
Micchaleq
post
Post #4





Grupa: Zarejestrowani
Postów: 186
Pomógł: 4
Dołączył: 13.10.2009

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


Cytat(kreatiff @ 5.06.2015, 12:31:17 ) *
Foreach $kolor stwórz tablicę $tabele[$kolor] = $rozmiar.


Dziękuje Ci, ale twój przykład jest bardziej ręczny. W sumie źle podałem źródłową tabelę.
  1. $table = array(
  2. 'kolor' => array('biały', 'czerwony').
  3. 'rozmiar' => array( '37', '38'),
  4. 'wzor' => array('a', 'b')
  5. );


i to chce przerobić na:
EDIT: Ehh przepraszam muszę poprawić to co chce otrzymać

  1. $table = array(
  2. 'kolor' => array(
  3. 'bialy' => array(
  4. 'rozmiar' => array(
  5. '37' => array(
  6. 'wzor' => array('a', 'b')
  7. ),
  8. '38' => array(
  9. 'wzor' => array('a', 'b')
  10. ),
  11. )
  12. ),
  13. 'czerwony' => array(
  14. 'rozmiar' => array(
  15. '37' => array(
  16. 'wzor' => array('a', 'b')
  17. ),
  18. '38' => array(
  19. 'wzor' => array('a', 'b')
  20. ),
  21. )
  22. )
  23. )
  24. );)


Zatem trzeba to będzie jakoś chyba w foreach przetworzyć tylko nie mam pomysłu kompletnie

Ten post edytował Micchaleq 5.06.2015, 11:50:44
Go to the top of the page
+Quote Post
rad11
post
Post #5





Grupa: Zarejestrowani
Postów: 1 270
Pomógł: 184
Dołączył: 7.10.2012
Skąd: Warszawa

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


Tak na szybko:
  1. $table = array(
  2. 'kolor' => array('biały', 'czerwony', 'czarny'),
  3. 'rozmiar' => array( '37', '38'),
  4. 'wzor' => array('a', 'b')
  5. );
  6.  
  7. $merge = array();
  8. foreach($table['kolor'] as $k => $v){
  9.  
  10. for($i=0;$i<count($table['rozmiar']);$i++){
  11.  
  12. for($j=0;$j<count($table['wzor']);$j++){
  13.  
  14. $merge['kolor'][$v]['rozmiar'][$table['rozmiar'][$i]]['wzor'] = $table['wzor'];
  15.  
  16. }
  17.  
  18. }
  19.  
  20. }
  21. var_dump($merge);


Ten post edytował rad11 5.06.2015, 12:26:22
Go to the top of the page
+Quote Post
Micchaleq
post
Post #6





Grupa: Zarejestrowani
Postów: 186
Pomógł: 4
Dołączył: 13.10.2009

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


Witam,

Dziękuję za powyższy kod, ale to znów nie jest rozwiązanie problemu.

To ma być automatyczne a nie ręczne. Nazwy tych tabel mogą się zmieniać tak jak ich ilość, może równie dobrze być dwie lub 4.
Go to the top of the page
+Quote Post
johny_s
post
Post #7





Grupa: Zarejestrowani
Postów: 594
Pomógł: 122
Dołączył: 17.07.2005
Skąd: P-na

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


  1. function mymerger($t) {
  2. if(count($t) == 1) return $t;
  3. $ret = array();
  4. foreach($t as $k => $v) {
  5. $first = array_shift($t);
  6. foreach($first as $item) {
  7. $ret[$k][$item] = mymerger($t);
  8. }
  9. break;
  10. }
  11. return $ret;
  12. };
  13.  
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: 7.10.2025 - 18:09