Alex Marius
Alex Marius

Reputation: 37

PHP array format

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

Answers (4)

Steven10172
Steven10172

Reputation: 2013

That is the output of json_encode($array), where $array is nested.

Upvotes: 0

koredalin
koredalin

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

Sirko
Sirko

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

Fabio
Fabio

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

Related Questions