2011-05-22 5 views
1

Je suis en train de construire un tableau multi avec cette structure:boucle PHP foreach construire tableau multi

Array 
(
    [2] => Array //this is the user's unique ID 
     (
      [name] => Jack 
      [location] => Somerville, Massachusetts, United States 
      [cars] => Array 
       (
        [10] => Toyota //this is the car's unique ID 
        [11] => Porsche 
       ) 
     ) 

    [5] => Array 
     (
      [name] => Luke 
      [location] => Schwelm, North Rhine-Westphalia, Germany 
      [cars] => Array 
       (
        [1] => Honda 
        [2] => VW 
        [5] => Maserati 
       ) 
     ) 

    [1] => Array 
     (
      [name] => Jabba 
      [location] => Denver, Colorado, United States 
      [cars] => Array 
       (
        [3] => Tesla 
       ) 
     ) 
) 

J'utilise cette boucle foreach mais je suis coincé à obtenir le tableau cars intégré dans le tableau search data.

Chaque utilisateur peut avoir plus d'une voiture, donc je devrais boucler toutes les voitures pour chaque utilisateur, générer cette rangée, et la mettre dans la boucle originale foreach.

$search_data = array(); 
    foreach ($query->result() as $row) { 
     $search_data[$row->id] = array(

      'name' => $row->name, 
      'location' => $row->location, 
      'cars' => array($row->car_id), //this is where I need to insert another array 
     ); 
    } 
    return $search_data; 

Toutes les suggestions comment faire?

Merci de votre aide!

TABLEAU DES DONNÉES EXEMPLE

USER NAME LOCATION CARS 
2  JACK A   TOYOTA 
2  JACK A   PORSCHE 
5  LUKE B   HONDA 
5  LUKE B   VW 
5  LUKE B   MASERATI 
1  JABBA C   TESLA 
+0

shouldent $ ligne-> car_id être déjà un tableau? –

+0

je l'ai juste mis là pour montrer où j'ai besoin d'aide - le laisser comme ça ne retournera qu'une seule voiture, pas la rangée de voitures qu'un utilisateur peut avoir - je dois boucler toutes les voitures pour chaque utilisateur – pepe

+0

il est difficile de mettre voitures dans un tableau si elle est séparée sur une ligne différente, parce que quand vous le mettez dans un tableau, le résultat suivant de la même requête se perd, vous avez mon idée? –

Répondre

2

Il semble que vous créez le tableau grâce à une table de base de données. Alors pouvez-vous s'il vous plaît donner 2 ou plusieurs données d'échantillon. il sera plus facile de donner une réponse si des données d'échantillon sont là.

Edit: Eh bien, ce pourrait ne pas être le meilleur code, mais je pense que vous serez en mesure de trouver une meilleure façon après avoir vu ce

$id = $row['id']; 
    if (!isset($search_data[$id])){ 
     $search_data[$id] = array(); 
    } 
    $search_data[$id]['name'] = $row['name']; 
    $search_data[$id]['location'] = $row['location']; 
    if (isset($search_data[$id]['cars'])) { 
     array_push($search_data[$id]['cars'],$row['cars']); 
    }else{ 
     $search_data[$id]['cars'] = array($row['cars']); //this is where I need to insert another array 
    } 
+0

juste mettre quelques exemples de données dans l'OP - laissez-moi savoir ce que vous pensez, merci – pepe

+0

@torr Ceci est le tableau que j'ai obtenu avec cette solution Array ([2] => Array ([name] => Jack [location] = > A [voitures] => Tableau ([0] => Porsche [1] => Toyota)) [5] => Tableau ([nom] => Luke [emplacement] => B [voitures] => Tableau ([ 0] => Honda [1] => VW [2] => Maserati)) [1] => Tableau ([nom] => Jabba [emplacement] => C [voitures] => Tableau ([0] => Tesla))) – sYl3r

+0

en fait votre idée d'utiliser 'array_push' fonctionne très bien pour cette situation - pas sûr si d'autres solutions seraient plus efficaces que cela - merci d'aider! – pepe