Search code examples
phparraysjsonloops

How to loop over json-encoded data?


I have a function

public function get_detail($subscriberid)
{
    $bigArray = array();

    $result = mysql_query("SELECT *  from prospect_requests WHERE subscriber_id = '$subscriberid'");
    // $user_data = mysql_fetch_array($result);
    $no_rows = mysql_num_rows($result);

    while ( $row = mysql_fetch_assoc( $result)) {
        $bigArray[] = $row;
    }
    return json_encode($bigArray);
}

I am calling this function by using the user class object from my html and it is returning the data in form array.

I am trying to populate those values in my HTML table do I am using the following method.

<table>
    <?php
    $ary = json_decode($user->get_detail($uid));
    echo "<tr>"         
        foreach($ary as $key=>$value) {
            echo "<td>";
                print  $key['$value'];
            echo "</td>";
        }
    echo "</tr>";
    ?>

The above foreach() is not printing for me, but when I am printing the print_r($ary);, I am getting the desire array of arrays.

Please tell me why values are not populating in table.

Update output of print_r($ary)

Array (
    [0] => stdClass Object (
        [id] => 133
        [customer_id] => caason
        [subscriber_id] => ELECTRO_SUBS_12800
        [extension_id] => 
        [vendor_number] => 
        [product_code] => 
        [prospect_email1] => [email protected]
        [prospect_phone1] => +575445
        [prospect_email2] =>
        [prospect_phone2] =>
        [prospect_title] => IT Engineer
        [prospect_company] => gggg
        [prospect_name] => ggdf
        [prospect_message] => MESSAGE
        [create_timestamp] => 2012-12-20 16:28:46
        [update_timestamp] => 2012-12-20 16:33:15
        [status] => 0
        [track_id] => 201660a2-4a66-11e2-abeb-00151771ff65
        [initiated_by] => SMS
        [subscriber_email] => [email protected]
        [vendor_email] => [email protected]
    )
    [1] => stdClass Object (
        [id] => 134
        [customer_id] => caason
        [subscriber_id] => ELECTRO_SUBS_12800
        [extension_id] =>
        [vendor_number] =>
        [product_code] => 12800
        [prospect_email1] => [email protected]
        [prospect_phone1] => +756767863
        [prospect_email2] => 
        [prospect_phone2] => 
        [prospect_title] => TESTING232 
        [prospect_company] => Sadhana Systems
        [prospect_name] => 7dfgfg
        [prospect_message] => MESSAGE
        [create_timestamp] => 2012-12-22 02:43:51
        [update_timestamp] => 2012-12-22 22:42:36
        [status] => 0
        [track_id] => 380024bc-4b85-11e2-abeb-00151771ff65
        [initiated_by] => SMS
        [subscriber_email] => [email protected]
        [vendor_email] => [email protected]
    )
    [2] => stdClass Object (
        [id] => 135
        [customer_id] => caason
        [subscriber_id] => ELECTRO_SUBS_12800
        [extension_id] => 
        [vendor_number] => 
        [product_code] => 12800 
        [prospect_email1] => [email protected] 
        [prospect_phone1] => +25454 
        [prospect_email2] => 
        [prospect_phone2] => 
        [prospect_title] => Sw Engineer 
        [prospect_company] => Talisman 
        [prospect_name] => Naveen 
        [prospect_message] => MESSAGE 
        [create_timestamp] => 2013-01-02 16:32:38 
        [update_timestamp] => 2013-01-02 16:35:48 
        [status] => 0 
        [track_id] => d1da0adc-549d-11e2-abeb-00151771ff65 
        [initiated_by] => SMS 
        [subscriber_email] => [email protected] 
        [vendor_email] => [email protected]
    ),
    ...
)

Solution

  • Try this:

    json_decode($user->get_detail($uid), true);
    

    Ref: http://php.net/manual/en/function.json-decode.php

    When TRUE, returned objects will be converted into associative arrays.