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


JacobDelcroix
Réponse acceptée

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
    );

}

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
Auteur

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

Joouul
Auteur

Haaaa super JacobDelcroix =D ça marche niquel =D