2012-05-22 60 views
0

我怎样才能得到这种格式:PHP阵列格式

{ 
"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":[ 
       ] 


    }], 

} 

为PHP数组?我试过

$array[] = array('id'=>5, link => 'product.php?id_product=5' ... and so on) 

但是当我用JSON编码它不起作用。

回答

3

您只需以正确的方式嵌套数组,如下例所示。

$arr = array('products' => array(
    array('id'=>4, link => 'product.php?id_product=4'), 
    array('id'=>5, link => 'product.php?id_product=5') 
) 
); 

编辑

在你的代码,它看起来像这样初始化对象:

$arr = array('products' => array()); 

而且每次后续产品可以添加这样的(例如,在一个循环,你解析你的数据库结果):

$arr['products'][] = array('id'=>5, link => 'product.php?id_product=5'); 
+0

好,我tryed这一点,它的工作原理,但如何获得这个结果,我有一个Ajax调用去控制器控制器我需要编码的代码是很简单的,但问题是应该我在foreach循环中执行它?我的意思是如何制作多维数组。每次我添加一个产品数组应该像'$ arr = array('products'=> array( array('id'=> 4,link =>'product.php?id_product = 4'))的新产品时, ('id'=> 5,link =>'product.php?id_product = 5') ) ); ' –

+0

@ user743738看我的编辑。 – Sirko

0
$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); 
0

这就是json_encode($array)的输出,其中$array是嵌套的。

0

如果您需要以JSON格式返回AJAX响应 - 您需要添加标题。

<?php 
header("Content-type: application/json"); 
echo json_encode($array); 

否则 - 您可以将数组打印到JS全局变量中。

<?php 
echo '<script>'; 
echo 'var foo = ' . json_encode($array); . ';'; 
echo '</script>';