2013-06-20 2 views
3

Je ne peux pas obtenir mes données à partir d'un tableau, il montre juste une liste vide de 3 éléments de la liste lorsque je lance ma boucle foreach.Get Data from Array PHP

Quand j'imprimer mon tableau, il ressemble à ceci ->

Array 
(
    [1] => Array 
     (
      [id] => 10 
      [orderinfo] => Array 
      [userid] => 210 
      [date] => 2013-06-20 13:46:27 
     ) 

    [2] => Array 
     (
      [id] => 18 
      [orderinfo] => helo 
      [userid] => 210 
      [date] => 2013-06-20 15:04:58 
     ) 

    [3] => Array 
     (
      [id] => 19 
      [orderinfo] => {"order":[{"id":"2","name":"Basil Cress","qty":"1"},{"id":"4","name":"Sakura Mix","qty":"1"},{"id":"6","name":"Beetroot Shoots","qty":2},{"id":"28","name":"Celery","qty":2},{"id":"24","name":"Orange Capsicums","qty":"1"}]} 
      [userid] => 210 
      [date] => 2013-06-20 15:06:46 
     ) 

) 

Mon code à ce jour ..

foreach ($orderdata as $item) { 

    $orderinfo = json_decode($item->orderinfo, true); 

    $orderitem[] = array(
     'date' => $item->date, 
     'productname' => $orderinfo['name'], 
     'productqty' => $orderinfo['qty'], 
    );    
} 


echo "<pre>"; 
print_r($orderdata); 
echo "</pre>"; 
?> 



<?php foreach ($orderitem as $orderitems) { ?> 
    <li> 
    <?php echo $orderitems['date']; ?> 
    </li> 
<?php }; ?> 
+2

pouvez-vous publier votre JSON? – bksi

+0

Est-ce que 'orderinfo' est cohérent pour chaque élément, ou s'agit-il parfois d'un tableau et parfois d'une chaîne JSON? – jterry

+0

Le json est dans le tableau, mais il n'explique toujours pas pourquoi la date n'apparaît pas? – Brent

Répondre

2

Essayez de déclarer votre tableau avant la boucle comme ceci. Est-ce que tu fais déjà ça?

$orderitem = array(); 
foreach ($orderdata as $item) { 

    $orderinfo = json_decode($item->orderinfo, true); 

    $orderitem[] = array(
     'date' => $item->date, 
     'productname' => $orderinfo['name'], 
     'productqty' => $orderinfo['qty'], 
    );    
} 

Vous pouvez aussi alimenter votre tableau différemment, comme ceci:

array_push($orderitem,array(
      'date' => $item->date, 
      'productname' => $orderinfo['name'], 
      'productqty' => $orderinfo['qty'], 
     )); 
1

Regardez la structure du JSON pour $orderInfo. C'est un tableau imbriqué. Donc $orderInfo['name'] n'existe pas. Vous voulez $orderInfo[0]['name'] ou un autre index numérique pour remplir les données.

Ceci est un tableau d'objets qui est décodé en un tableau de tableaux associatifs. Vous devez descendre d'un niveau pour obtenir le nom.

[ 
    {"id":"2","name":"Basil Cress","qty":"1"}, 
    {"id":"4","name":"Sakura Mix","qty":"1"}, 
    {"id":"6","name":"Beetroot Shoots","qty":2}, 
    {"id":"28","name":"Celery","qty":2}, 
    {"id":"24","name":"Orange Capsicums","qty":"1"} 
] 
+0

Ok cela a du sens, mais il devrait toujours afficher la date dans l'élément de la liste qu'il affiche actuellement en blanc. – Brent

+0

avez-vous essayé '$ item ['date']'? – Schleis

+0

Ouais juste essayé de ne pas le faire fonctionner. – Brent

1

Pourrait-il être juste votre css ?? Couleur d'arrière-plan avec la même couleur de texte? Je sais que c'est idiot mais qui sait ...

Essayez un print_r ($ orderitem); comme vous l'avez fait avec $ orderdata

+0

Ouais essayé de jeter un oeil et rien qu'une simple liste de points de balle – Brent