2016-04-02 6 views
2

Ich habe die folgende Reihe von Ergebnissen:PHP merge Arrays nach Wert, in Tabelle - beste Struktur?

Array 
    (
     // 1st big array of results 
     [0] => Array 
      (
       [0] => Array 
        (
         [customer] => John 
         [shop_name] => shop1 
         [shop_address] => address1 
       ) 

       [1] => Array 
        (
         [customer] => John 
         [shop_name] => shop2 
         [shop_address] => address2 
       ) 

       [2] => Array 
        (
         [customer] => Mark 
         [shop_name] => shop1 
         [shop_address] => address1 
       ) 

     ) 

     // 2nd big array of results 
     [1] => Array 
      (
       [0] => Array 
        (
         [customer] => Cathy 
         [shop_name] => shop3 
         [shop_address] => address3 
       ) 

       [1] => Array 
        (
         [customer] => Cathy 
         [shop_name] => shop4 
         [shop_address] => address4 
       ) 

       [2] => Array 
        (
         [customer] => Maria 
         [shop_name] => shop3 
         [shop_address] => address3 
       ) 

     ) 

) 

Es gibt einzigartige Paare von shop_name und shop_address für jeden Kunden in jedem großen Array von Ergebnissen.

Was würde ich

tun würde Ich mag jeden customer von ersten großen Array setzen in einer <th></th> aber seine shop_name und shop_address in einzelnen <td></td> wie folgen aus:

What I'd like to do - Table IMG

Und natürlich wiederholen Sie diesen Prozess für 2. große Array.

Habe ich die beste Struktur von Array, um dies zu tun?

Oder vielleicht sollte ich jeden customer in seinem eigenen Array setzen:

// Give each 'customer' its own array 

foreach ($array[0] as $result) { 
    $array_by_customer[$result['customer']][] = $result; 
} 

Aber wie Sie kann ich für array[0], dass nur sehen tun - erste große Reihe von Ergebnissen.

Array by customer - PHP Fiddle

Antwort

0

Ich glaube, Sie auf dem guten Weg waren: ein Array pro Kunde machen.

Ich schlage vor, Sie tun dies für alle Ergebnisse in Array, und das ist es!

foreach ($array as $big_array_key => $results) { 
    foreach ($results as $result) { 
     $arrays_by_customer[$big_array_key][$result['customer']][] = $result; 
    } 
} 

Dann wird Ihr $ arrays_by_customer zwei große Arrays enthalten: eine für jede für Ihre erste große Arrays.

+0

Meine Antwort war ein bisschen kurz ... Ich denke, Sie waren auf dem guten Weg: Erstellen Sie ein Array pro Kunde. Auf diese Weise können Sie einen $ array_by_customer pro initialem großen Array ausfüllen, wenn Sie separate Tabellen formatieren möchten. – Baptiste

+0

Aber wie lege ich jedes '$ array_by_customer' in sein erstes großes Array? – JohnRios

+0

Behalten Sie einfach Ihre ursprüngliche Anordnung, wenn Sie es brauchen. Verwenden Sie das Zwischen-Array nur für Präsentationszwecke. – Baptiste