Łączenie tablic

0

Witam. Ma taką tablicę: (w rzeczywistości danych jest o wiele więcej)

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 1
            [2] => 2
            [3] => 1
        )

    [1] => Array
        (
            [0] => abc
            [1] => def
            [2] => ghj
            [3] => klm
        )

)

Po zastosowaniu array_unique zostaje mi:

Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
        )

    [1] => Array
        (
            [0] => abc
            [1] => def
            [2] => ghj
            [3] => klm
        )

)

Zastosuję teraz komendę count.

$a2=count($a[0], 1);
for ($z = 0; $z < $a2; $z++)
{
echo "[naglowek]".$a[0][$z]."[/naglowek]";
}

ale co zrobić, żeby do 1 mi dołączył wszystkie przykłady sprzed usunięcia duplikatu? Czyli, żeby na koniec to wyglądało tak

[naglowek]1[/naglowek]
[g]abc[/g]
[g]def[/g]
[g]klm[/g]
[naglowek]2[/naglowek]
[g]ghj[/g]
0

Opisz słowami co to za lista i co robi, bo w tym momencie nie mogę zrozumieć dlaczego akurat taki wynik ma być, i nie nazywaj zmennych a2, a, z, bo to jest zupełnie nieczytelne.

0
Array
(
    [0] => Array
        (
            [0] => Polska
            [1] => Polska
            [2] => Niemcy
            [3] => Polska
        )
 
    [1] => Array
        (
            [0] => Poniedziałek
            [1] => Wtorek
            [2] => Środa
            [3] => Czwartek
        )
 
)

Po zastosowaniu array_unique:

Array
(
    [0] => Array
        (
            [0] => Polska
            [1] => Niemcy
        )
 
    [1] => Array
        (
            [0] => Poniedziałek
            [1] => Wtorek
            [2] => Środa
            [3] => Czwartek
        )
 
)

I jaką komendę teraz zastosować, żeby wyszły połączenia z pierwszej tablicy czyli: Polska-poniedziałek, wtorek, czwartek. Niemcy-środa?

$kraj2=count($kraj[0], 1);
for ($z = 0; $z < $kraj2; $z++)
{
echo "[naglowek]".$kraj[0][$z]."[/naglowek]";
} 

To mi wyrzuci kraje ale chcę mieć takie coś i nie mogę wykombinować w jaki sposób to zrobić:

[naglowek]Polska[/naglowek]
[g]poniedziałek[/g]
[g]wtorek[/g]
[g]czwartek[/g]
[naglowek]Niemcy[/naglowek]
[g]środa[/g]
1

Dobra, po 2 minutach załapałem jaką pokrętną logiką Ty łączysz Niemcy ze środą, a Polskę z resztą...

Nie wiem po co uszkadzasz dane (bo ten array_unique to jest uszkodzenie danych, na podstawie których nie da się już zbudować tej zależności, o którą Ci chodzi), zamiast je przygotować do wyświetlenia i wyświetlić. Chcesz je pogrupować i zrobić to możesz np. tak:

$tabela = array(); //tu Twoja tabelka
$grupy = array();
forach ($tabela[0] as $key=>$val) { // leciszy po krajach
  $grupy[$key][] = $tabela[1][$key]; // i dodajesz do zmiennej z kluczem z nazwą kraju kolejne dni
}

foreach ($grupy as $key=>$val) { // lecisz po krajach
  echo "[naglowek]$key[/naglowek];
  foreach ($val as $dzien) { // i po dniach z danego kraju
    echo "[g]$dzien[/g]";
  }
}
0

Bo ogólnie jestem na początku mojej drogi z PHP :)
Stosowałem array_unique aby uniknąć duplikatów w tabeli. Zmieniłem Twój skrypt bo ciągle wywalał błędy :/

$tabela = array('Polska', 'Polska', 'Niemcy', 'Polska');
$grupy = array('Poniedzialek', 'Wtorek', 'Sroda', 'Czwartek');
foreach ($tabela as $key=>$val) { 
$grupy[$key] = $tabela[$key];
  echo "[naglowek]".$val."[/naglowek]";} 

Ale przecież w takiej formie on zamienia Poniedziałek itd. na nazwę kraju :/ Na razie mniejsza o to, bo właśnie skrypt jak już wszystko w nim dobrze będzie to wywołuje taką tabelę:

**Polska**
Poniedziałek
**Polska**
Wtorek
**Niemcy**
Środa
**Polska**
Czwartek

A ja właśnie chciałem zastosować array_unique (wiem, niepoprawnie :P) żeby otrzymać takie coś:

 **Polska**
Poniedziałek
Wtorek
Czwartek
**Niemcy**
Środa 
1

Pisane z palca do przeglądarki,
ale literówka, oraz złe wstawienie zmiennych w stringa to jeszcze nie powód, żeby mój kod wywalać, szczególnie, że opisałem, co trzeba zrobić i znowu wstawiać swoje ;)

<?php
$tabela = array(array('pl', 'pl', 'de', 'pl'), array('pon', 'wt', 'sr', 'czw'));
$grupy = array();
foreach ($tabela[0] as $key=>$val) {
  $grupy[$val][] = $tabela[1][$key]; // tu zrobiłem z pośpiechu błąd
}
echo '<pre>'.print_r($grupy, true).'</pre>'; // tak testowo zobacz sobie jak tablica powinna wyglądać przed iteracją po niej
foreach ($grupy as $key=>$val) {
  echo "[naglowek]{$key}[/naglowek]"; // tu nie skojarzyłem, ze mi php zacznie traktować zmienną w stringu jako tablicę
  foreach ($val as $dzien) {
    echo "[g]{$dzien}[/g]";
  }
}
0

Geniusz :D
Wielkie podziękowanie dla Ciebie :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1