Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Łączenie tablic
Forum PHP.pl > Forum > Przedszkole
Kshyhoo
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.
markuz
  1. array_walk($tablica1, function(&$a, $b) { $a['cos'] = $tablica2[0]['a' . $b] });

O to chodzi?
Kshyhoo
Cytat
Parse error: syntax error, unexpected '}' in ...
kapslokk
Ś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 ?
Kshyhoo
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
kapslokk
  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));
Kshyhoo
Tak mi dodaje drugą tablicę jako ostatni element pierwszej tablicy.
kapslokk
To weź rozpisz 2 tablice po minimum 2 elementy i do tego taką tablicę jaką chcesz otrzymać, ale całą a nie fragment.
Kshyhoo
Niewyprintowane, tylko jako dane ?
kapslokk
Jakkolwiek, byle by byly cale tablice i caly wynik, bo z tego co jest nie bardzo potrafie rozkminic o co Ci tak naprawde chodzi.
Kshyhoo
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. +-----+-----+
kapslokk
  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.
Kshyhoo
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
kapslokk
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.
Kshyhoo
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'].
kreatiff
Linia 26: $a['adv1'] = $a2[0][$array2Keys[$i]];
Zamiast adv1 wstawiasz co chcesz.
Kshyhoo
Dzięki.
kreatiff
Podziękowania się kapslokkowi należą, ja tylko dodałem małą poprawkę cap.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.