Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Add Additional Objects to JSON Encoded Array

I am currently using a JSON encoded array to display the users in my database for an auto-suggest feature.

It looks something like this:

$sth = mysql_query("SELECT id, name FROM users");

$json = array();

    while($row = mysql_fetch_assoc($sth)) {
        $json['name'] = $row['name'];
        $json['id'] = $row['id'];
        $data[] = $json;
    }

print json_encode($data);

This returns:

[{"id":"81","name":"John Doe"},{"id":"82","name":"Jane Doe"}]

My question is somewhat 2-fold:

First, how would I manually add an additional object to this output? For example, let's say I wanted to add: {"id":"444","name":"A New Name"}

Thus, it'd look like:

[{"id":"81","name":"John Doe"},{"id":"82","name":"Jane Doe"},{"id":"444","name":"A New Name"}]

Second, let's say I also wanted to add more objects to the array from a separate table as well, such as:

$sth = mysql_query("SELECT id, title FROM another_table");

$json = array();

    while($row = mysql_fetch_assoc($sth)) {
        $json['name'] = $row['title'];
        $json['id'] = $row['id'];
        $data[] = $json;
    }

print json_encode($data);

This way I could have both tables populated in the JSON array, thus, showing up as additional options in my autosuggest.

Hopefully this makes sense, as I've tried hard to articulate what I am trying to accomplish.

Thanks!

like image 717
Dodinas Avatar asked Aug 17 '10 15:08

Dodinas


1 Answers

Just keep pushing to the $data array.

$json = array();

    while($row = mysql_fetch_assoc($sth)) {
        $json['name'] = $row['name'];
        $json['id'] = $row['id'];
        $data[] = $json;
    }

$custom = array('name'=>'foo', 'id' => 'bar');
$data[] = $custom;

Then at the very end, do your json_encode. Assuming you're not referring to merging it in the JS itself with multiple ajax calls.

And if you have separate scripts, combine them in one php page.

like image 149
meder omuraliev Avatar answered Sep 21 '22 06:09

meder omuraliev