Reputation: 37
How can I get this format:
{
"products": [
{
"id": 4,
"link": "/product.php?id_product=4",
"quantity": 1,
"priceByLine": "$185.00",
"name": "Orci hendrer...",
"price": "$185.00",
"idCombination": 0,
"hasAttributes": false,
"hasCustomizedDatas": false,
"customizedDatas":[
]
}, {
"id": 5,
"link": "/product.php?id_product=5",
"quantity": 1,
"priceByLine": "$215.00",
"name": "Semper rutru...",
"price": "$215.00",
"idCombination": 0,
"hasAttributes": false,
"hasCustomizedDatas": false,
"customizedDatas":[
]
}],
}
as a PHP array? I've tried
$array[] = array('id'=>5, link => 'product.php?id_product=5' ... and so on)
but when I encode with JSON it doesn't work.
Upvotes: 0
Views: 395
Reputation: 2013
That is the output of json_encode($array)
, where $array
is nested.
Upvotes: 0
Reputation: 445
If you need to return an AJAX responce in JSON format - you need to add a header.
<?php
header("Content-type: application/json");
echo json_encode($array);
Otherwise - you can print the array into a JS global variable.
<?php
echo '<script>';
echo 'var foo = ' . json_encode($array); . ';';
echo '</script>';
Upvotes: 0
Reputation: 74036
You just have to nest your arrays in the proper way like the following example.
$arr = array( 'products' => array(
array('id'=>4, link => 'product.php?id_product=4' ),
array('id'=>5, link => 'product.php?id_product=5' )
)
);
EDIT
In your code it would look like this to init the object:
$arr = array( 'products' => array() );
And each subsequent product could be added like this (e.g., in a loop where you parse your database result):
$arr['products'][] = array('id'=>5, link => 'product.php?id_product=5' );
Upvotes: 3
Reputation: 19176
$data = array(
'products' => array(
array('id'=>5, link => 'product.php?id_product=5' ... and so on),
array('id'=>5, link => 'product.php?id_product=5' ... and so on)
// repeat once for element.
)
);
json_encode($data);
Upvotes: 0