2013-04-02 1 views
1

J'ai un tableau qui regroupe différents éléments par type d'élément. Je regroupe le résultat par champ category_id. Ce que je veux est que la sortie soitGroupes imbriqués de groupe et de compte PHP

item1 = 3
item2 = 2

Mon tableau ressemble à ceci si je fais un var_dump()

array(2) { 
    ["item1"]=> 
    array(3) { 
    [0]=> 
    string(1) "3" 
    [2]=> 
    string(1) "5" 
    [4]=> 
    string(1) "7" 
    } 
    ["item2"]=> 
    array(2) { 
    [1]=> 
    string(1) "4" 
    [3]=> 
    string(1) "6" 
    } 
} 

Voici le code que je utilise :

  $items = Item::where('order_id','=',$payload["orderId"])->get(); 
      $itemsGrouped = []; 
      $count = 0; 
      foreach($items as $item){ 
       $itemsGrouped[$item->category_id][$count] = $item->id; 
       $count++; 
      } 

      foreach($itemsGrouped as $grp){ 
       echo key($itemsGrouped).'='.count($grp).'<br>'; 
      }; 

Et voici ce que je reçois actuellement. Le compte fonctionne mais pas la clé $ itemsGrouped. C'est dupliqué.

item2=3<br>item2=2<br> 
+0

+1 simple mais bonne question. –

Répondre

2

Changer votre code comme ci-dessous

foreach($itemsGrouped as $key => $grp){ 
    echo $key.'='.count($grp).'<br>'; 
}; 

Pour utiliser la fonction clé(), vous devez traverser le tableau en utilisant la fonction suivante/courant

+0

+ 1 réponse simple et douce. –

1
 foreach($itemsGrouped as $key => $grp){ 
      echo $key.'='.count($grp).'<br>'; 
     }; 

key() fonction renvoie la clé de l'élément courant, qui est définie par le pointeur interne d'un tableau. Évidemment, il pointe toujours vers le dernier élément.

0
$myarray = "Your array"; 

    $count = array(); // create an empty array 

    foreach($myarray as $arr) { 
     foreach($arr as $a) { 
      $key = array_keys($a); 
      $count[$key[0]]++; 
     } 
    } 

    print_r($count); 
Questions connexes