将SQL附加到现有关联数组

Learning PHP and creating associative arrays.

Trying to create associative array that describes an activity. An activity for this example is 354 and 355.

This is my current code:

$query = $db->prepare('SELECT item_id FROM kh_program_item_info WHERE '. $where);
    $query->execute();
    if($query->rowCount() > 0){
        while($john = $query->fetch(PDO::FETCH_OBJ)){
            $key1 = $john->item_id;
            $report-> $key1= array();
        }


        foreach ($report as $key=>$johnval) {

            $where = 'item_id = ' . $key;       
            $query = $db->prepare('SELECT activity_desc, DATE_FORMAT(activity_date,"%d/%m/%Y") AS activityDate FROM kh_program_items WHERE '. $where);
            $query->execute();
            $results = $query->fetch(PDO::FETCH_OBJ);
            $report->$key = $results;


            echo '<pre>';
            echo print_r($report);
            echo '</pre>';          


        }

    } else {
        echo '<p>there are no activities</p>';
    }

this will yield results.

stdClass Object
(
    [354] => stdClass Object
        (
            [activity_desc] => <p>Send Activity</p>
            [activityDate] => 08/11/2016
        )

    [355] => stdClass Object
        (
            [activity_desc] => <p>Send Activity 2</p>
            [activityDate] => 11/11/2016
        )

)

I am now trying to add more information for 354 and 355.
I have revisited the code and here is new code:

$query = $db->prepare('SELECT item_id FROM kh_program_item_info WHERE '. $where);
    $query->execute();
    if($query->rowCount() > 0){
        while($john = $query->fetch(PDO::FETCH_OBJ)){
            $key1 = $john->item_id;
            $report-> $key1= array();
        }


        foreach ($report as $key=>$johnval) {

            $where = 'item_id = ' . $key;       
            $query = $db->prepare('SELECT activity_desc, DATE_FORMAT(activity_date,"%d/%m/%Y") AS activityDate FROM kh_program_items WHERE '. $where);
            $query->execute();
            $results = $query->fetch(PDO::FETCH_OBJ);
            $report->$key = $results;

            $query = $db->prepare('SELECT info_value FROM kh_program_item_info WHERE '. $where .' AND info_type="program_category"');
            $query->execute();
            $info_value = $query->fetch(PDO::FETCH_OBJ);

            $where = 'category_id = ' . $info_value->info_value;
            $query = $db->prepare('SELECT category_name FROM kh_program_categories WHERE '. $where);
            $query->execute();
            $actcategories = $query->fetch(PDO::FETCH_OBJ); 

            $report->$key = $actcategories;         

            echo '<pre>';
            echo print_r($report);
            echo '</pre>';          
        }

    } else {
        echo '<p>there are no activities</p>';
    }

this will obviously overwrite what I have created and yield the following results:

stdClass Object
(
    [354] => stdClass Object
        (
            [category_name] => Parent Input
        )

    [355] => stdClass Object
        (
            [category_name] => Children's Menu
        )

)

The problem is $myactivity->$key = $actcategories;.

How do I append to the end without overwriting information?

I need to yield this result

stdClass Object
    (
        [354] => stdClass Object
            (
                [activity_desc] => <p>Send Activity</p>
                [activityDate] => 08/11/2016
                [category_name] => Parent Input
            )

        [355] => stdClass Object
            (
                [activity_desc] => <p>Send Activity 2</p>
                [activityDate] => 11/11/2016
                [category_name] => Children's Menu
            )

    )

Thanks in advance.

You'll need to build your array first and then, send it to the object.

i.e. :

    foreach ($report as $key=>$johnval) {

        $where = 'item_id = ' . $key;       
        $query = $db->prepare('SELECT activity_desc, DATE_FORMAT(activity_date,"%d/%m/%Y") AS activityDate FROM kh_program_items WHERE '. $where);
        $query->execute();
        // build first array
        $result_first_query = $query->fetch(PDO::FETCH_OBJ);

        $query = $db->prepare('SELECT info_value FROM kh_program_item_info WHERE '. $where .' AND info_type="program_category"');
        $query->execute();
        $info_value = $query->fetch(PDO::FETCH_OBJ);

        $where = 'category_id = ' . $info_value->info_value;
        $query = $db->prepare('SELECT category_name FROM kh_program_categories WHERE '. $where);
        $query->execute();
        // build second array
        $result_second_query = $query->fetch(PDO::FETCH_OBJ); 

        // put them together in $report->$key
        $report->$key = $result_first_query + $result_second_query;         

        echo '<pre>';
        print_r($report);
        echo '</pre>';          
    }

Hope it helps.

I did manage to push after i used fetch_assoc.

I guess it was just format it didnt like but thank you.