Tableau dans tableau, foreach

Par Joouul, il y a 11 ans


Bonjour,

j'aimerais mettre un tableau dans un tableau en parcourant une liste d'objets, mais j'ai des soucis :p

Voici mon code

$provider = Provider::all(); $order = Order::whereIdFamily($id_family)->get(); $providerArray = array(); foreach ($provider as $keyProvider => $valueProvider) { $providerArray[] = array('id_provider' => $valueProvider->id_provider, 'name' => $valueProvider->name); foreach ($order as $keyOrder => $valueOrder) { if ($valueOrder->id_provider == $valueProvider->id_provider) { $providerArray[] = array('id_order' => $valueOrder->id_order, 'description' => $valueOrder->description); } } }

ce qui me retourne ceci (avec des données de tests)

Array ( [0] => Array ( [id_provider] => 1 [name] => La ferme de Gérard Petit ) [1] => Array ( [id_order] => 189 [description] => 10 cerices ) [2] => Array ( [id_order] => 192 [description] => 1 très grosse pastèque ) [3] => Array ( [id_provider] => 2 [name] => La boulangerie du Père Noël ) [4] => Array ( [id_order] => 174 [description] => 2 ananas ) [5] => Array ( [id_order] => 175 [description] => 1 ravier de fraises ) [6] => Array ( [id_order] => 179 [description] => 5 bananes ) )

et j'aimerais avoir

Array ( [0] => Array ( [id_provider] => 1 [name] => La ferme de Gérard Petit [0] => Array ( [id_order] => 189 [description] => 10 cerices ) [1] => Array ( [id_order] => 192 [description] => 1 très grosse pastèque ) ) [1] => Array ( [id_provider] => 2 [name] => La boulangerie du Père Noël [0] => Array ( [id_order] => 174 [description] => 2 ananas ) [1] => Array ( [id_order] => 175 [description] => 1 ravier de fraises ) [2] => Array ( [id_order] => 179 [description] => 5 bananes ) ) )

à savoir, chaque produit dans le teblaeu de son fournisseur.

Sûrement un truc bête, mais moi et les tableaux ... :p

4 réponses

Alexandre #lbac, il y a 11 ans

Salut, on pourrait avoir la structure de ta table s'il te plaît ?

De plus dans ce que tu voudrais tu aimerais donc 3 niveaux de tableau ?

Joouul, il y a 11 ans

table : provider

id_provider
name
status
created_at
updated_at
deleted_at

table : order

id_order
id_family
id_provider
id_permanence
description
created_at
updated_at

Et pour les tableaux, oui 3 niveaux. Un array qui contient tous mes providers et dans chaque array provider, un autre array qui contient tous les orders liés à ce provider donc oui 3 niveaux :) et je galère un peu :p

JacobDelcroix, il y a 11 ans

Je pense que tu peux tester ça :

<?php $providerArray = array(); foreach ($provider as $keyProvider => $valueProvider) { $orders = array(); foreach ($order as $keyOrder => $valueOrder) { if ($valueOrder->id_provider == $valueProvider->id_provider) { $orders[] = array('id_order' => $valueOrder->id_order, 'description' => $valueOrder->description); } } $providerArray[$keyProvider] = array( 'id_provider' => $valueProvider->id_provider, 'name' => $valueProvider->name, 'orders' => $orders ); }
Joouul, il y a 11 ans

Haaaa super JacobDelcroix =D ça marche niquel =D