Get Data from Array PHP

17,356

Solution 1

Try to declare your array before the loop like this. Are you already doing this?

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

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

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

You can also try to populate your array differently, like this:

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

Solution 2

Look at the structure of the the JSON for $orderInfo. It is a nested array. So $orderInfo['name'] doesn't exist. You want $orderInfo[0]['name'] or some other numerical index to fill in the data.

This is an array of objects which gets decoded to an array of associative arrays. You need to travel one more level down to get the name.

[
    {"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"}
]

Solution 3

Could it be just your css?? Background color with the same text color? I know it's silly but who knows...

Try a print_r($orderitem); just like you did with $orderdata

Share:
17,356
Brent
Author by

Brent

Updated on June 04, 2022

Comments

  • Brent
    Brent almost 2 years

    I cant quite get my data from an array, it just shows a blank list of 3 list items when I run my foreach loop.

    When I print my array it looks like this ->

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

    My code so far..

    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 }; ?>