jmarais
jmarais

Reputation: 93

Converting a multi-dimensional php array into a JSON array of objects

I need to create a multi-dimensional array in php and want to use it in a jQuery script as a JSON array of objects;

The required output in the jQuery script should look like this:

data = [
        { Month:'April', Comms:1000, Fees:200, Gains: 200},
        { Month:'May',   Comms:1200, Fees:300, Gains: 300}
        ]   

Currently my php arrays are generated as follow:

    $data1[] = array(
        'Month' => 'April',
        'Comms' => 1000,
        'Fees'  => 200,
        'Gains' => 200      
    );      
    $data2[] = array(
        'Month' => 'May',
        'Comms' => 1200,
        'Fees'  => 300,
        'Gains' => 300      
    );

    echo json_encode($data);

My question is how to combine data1 and data2 into the data array in the json_encode php function which will produce the required jQuery JSON array of objects?

I do have the values of the different array fields and can create data1 and data2 in a different way, so the data is flexible and I can combine them in any other way which will produce the data array which will output them in the required JSON format.

Any help will be highly appreciated, I have seen question regarding this subject but none which address the issue I am facing.

Upvotes: 0

Views: 1700

Answers (6)

Dharmendra Jadon
Dharmendra Jadon

Reputation: 141

You should make another array by extracting data from database by using groupBy months and store the data in other array.

$array = array();  
foreach ($data as $element) {
    $array[$element['month']][] = [ 'comms' => $element['comms'], 'fees' => $element['fees'], 'gains' => $element['gains']
}

Upvotes: 0

Hiren Soni
Hiren Soni

Reputation: 574

just user

echo json_encode($data1 + $data2);

Upvotes: 0

Ryan Brodie
Ryan Brodie

Reputation: 6620

You'll want to merge both Arrays into a new Array of Arrays. See the manual for more information.

$data = array_merge($data1, $data2);
echo json_encode($data)

or, more simply by using the + operator:

echo json_encode($data1 + $data2)

Upvotes: 1

rogal111
rogal111

Reputation: 5933

Write:

echo json_encode($data1 + $data2);

Upvotes: 1

Blaster
Blaster

Reputation: 9110

Simply:

echo json_encode($data1 + $data2);

Note that you can also use + to merge arrays.

Upvotes: 1

Try :

echo json_encode(array_merge($data1, $data2));

Upvotes: 1

Related Questions