Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Łączenie tablic
Kshyhoo
post
Post #1





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Jak mam połączyć dwie tablice:
  1. array(23) {
  2. [0]=>
  3. array(2) {
  4. ["id"]=>
  5. string(1) "1"
  6. ["name"]=>
  7. string(16) "jeden"
  8. }
  9. [1]=>
  10. array(2) {
  11. ["id"]=>
  12. string(1) "2"
  13. ["name"]=>
  14. string(17) "dwa"
  15. }
  16. [2]=>
  17. array(2) {
  18. ["id"]=>
  19. string(1) "3"
  20. ["name"]=>
  21. string(18) "trzy"
  22. }
  23. [3]=>
  24. array(2) {
  25. ["id"]=>
  26. string(1) "4"
  27. ["name"]=>
  28. string(14) "cztery"
  29. }
  30. }
  31.  
  32. array(1) {
  33. [0]=>
  34. array(23) {
  35. ["a1"]=>
  36. string(1) "2"
  37. ["a2"]=>
  38. string(1) "0"
  39. ["a3"]=>
  40. string(1) "0"
  41. ["a4"]=>
  42. string(1) "0"
  43. }
  44. }

Chciałbym je połączyć w jedną. Umiem, jeżeli są takie same, tu poległem.
Nie muszę mieć unikalnych kluczy, mogą być z pierwszej tablicy.


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 17)
markuz
post
Post #2





Grupa: Zarejestrowani
Postów: 1 240
Pomógł: 278
Dołączył: 11.03.2008

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


  1. array_walk($tablica1, function(&$a, $b) { $a['cos'] = $tablica2[0]['a' . $b] });

O to chodzi?


--------------------
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #3





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Cytat
Parse error: syntax error, unexpected '}' in ...


--------------------
Go to the top of the page
+Quote Post
kapslokk
post
Post #4





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


Średnik po $b] ...
Chyba też po function(&$a, $b) będziesz potrzebowal use ($tablica2)

Swoją drogą to nie wiem jak ma wyglądać Twoja tablica wynikowa, ale nie wystarczy po prostu użyć http://php.net/array_merge_recursive ?

Ten post edytował kapslokk 14.09.2016, 09:55:24
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #5





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Cytat
Parse error: syntax error, unexpected ';', expecting ')' in


Druga tablica ma być kolejnym elementem pierwszej:
  1. array(23) {
  2. [0]=>
  3. array(2) {
  4. ["id"]=>
  5. string(1) "1"
  6. ["name"]=>
  7. string(16) "jeden"
  8. ["a1"]=>
  9. string(1) "2"
  10. }

  1. array_walk($tablica1,
  2. function(&$a, $b) {
  3. $a['cos'] = $tablica2[0]['adv' . $b];
  4. }
  5. );

Cytat
Notice: Undefined variable: tablica2 in


--------------------
Go to the top of the page
+Quote Post
kapslokk
post
Post #6





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


  1. $a1 = [
  2. [
  3. 'id'=> '1',
  4. 'name' => 'test1'
  5. ],
  6. [
  7. 'id'=> '2',
  8. 'name' => 'test2'
  9. ],
  10. ];
  11.  
  12. $a2 = [
  13. [
  14. 'a1' => 'a1',
  15. 'a11' => 'a11'
  16. ]
  17. ];
  18.  
  19. var_dump(array_replace_recursive($a1, $a2));
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #7





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Tak mi dodaje drugą tablicę jako ostatni element pierwszej tablicy.


--------------------
Go to the top of the page
+Quote Post
kapslokk
post
Post #8





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


To weź rozpisz 2 tablice po minimum 2 elementy i do tego taką tablicę jaką chcesz otrzymać, ale całą a nie fragment.

Ten post edytował kapslokk 14.09.2016, 10:05:35
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #9





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Niewyprintowane, tylko jako dane ?


--------------------
Go to the top of the page
+Quote Post
kapslokk
post
Post #10





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


Jakkolwiek, byle by byly cale tablice i caly wynik, bo z tego co jest nie bardzo potrafie rozkminic o co Ci tak naprawde chodzi.
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #11





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Tablice są w pierwszym poście, a chcę otrzymać tak - do pierwszej tablicy:
  1. array(23) {
  2. [0]=>
  3. array(2) {
  4. ["id"]=> string(1) "1"
  5. ["name"]=> string(16) "jeden"
  6. ["a1"]=> string(1) "2" <<<< tu pierwszy element drugiej tablicy
  7. }
  8. array(2) {
  9. ["id"]=> string(1) "2"
  10. ["name"]=> string(17) "dwa"
  11. ["a2"]=> string(1) "0" <<<< tu drugi element drugiej tablicy
  12. }

czyli dokleić drugą do pierwszej:
  1. +-----+-----+
  2. | 1.1 | 2.1 |
  3. | 1.2 | 2.2 |
  4. | 1.3 | 2.3 |
  5. | 1.4 | 2.4 |
  6. +-----+-----+


--------------------
Go to the top of the page
+Quote Post
kapslokk
post
Post #12





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


  1.  
  2. $a1 = [
  3. [
  4. 'id'=> '1',
  5. 'name' => 'test1'
  6. ],
  7. [
  8. 'id'=> '2',
  9. 'name' => 'test2'
  10. ],
  11. [
  12. 'id'=> '3',
  13. 'name' => 'test3'
  14. ],
  15. ];
  16.  
  17. $a2 = [[
  18. "a1"=>"2",
  19. "a2"=>"0",
  20. "a3"=>"3",
  21. "a4"=>"0",
  22. ]];
  23. $i = 0;
  24. array_walk($a1, function(&$a) use (&$a2, &$i) {
  25. $array2Keys = array_keys($a2[0]);
  26. $a[$array2Keys[$i]] = $a2[0][$array2Keys[$i]];
  27. $i++;
  28. });
  29.  
  30. var_dump($a1);


Tylko coś takiego mi do glowy przychodzi.
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #13





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




To jest to, wielkie dzięki smile.gif

Mam tylko jedno pytanie: jak dobrać się do ostatnich kluczy (adv1...), ew. jak się ich pozbyć. Czyli zadowala mnie samo adv1.

Moja odpowiedź to 1 200 000 post smile.gif


--------------------
Go to the top of the page
+Quote Post
kapslokk
post
Post #14





Grupa: Zarejestrowani
Postów: 965
Pomógł: 285
Dołączył: 19.06.2015
Skąd: Warszawa

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


Cytat
Mam tylko jedno pytanie: jak dobrać się do ostatnich kluczy (adv1...), ew. jak się ich pozbyć. Czyli zadowala mnie samo adv1.

Nie rozumiem pytania.
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #15





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Nazwy kluczy to adv1, adv2, adv3 a chciałbym tylko adv. Chyba użyję substr.
Ew. co użyć, żeby w pętli wrzucić to do tabeli... skoro klucz się zmienia, nie mogę użyć $a1['adv'].


--------------------
Go to the top of the page
+Quote Post
kreatiff
post
Post #16





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

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


Linia 26: $a['adv1'] = $a2[0][$array2Keys[$i]];
Zamiast adv1 wstawiasz co chcesz.

Ten post edytował kreatiff 14.09.2016, 11:29:04
Go to the top of the page
+Quote Post
Kshyhoo
post
Post #17





Grupa: Opiekunowie
Postów: 3 855
Pomógł: 317
Dołączył: 4.01.2005
Skąd: że




Dzięki.


--------------------
Go to the top of the page
+Quote Post
kreatiff
post
Post #18





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

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


Podziękowania się kapslokkowi należą, ja tylko dodałem małą poprawkę cap.gif
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: 20.08.2025 - 07:38