2014-02-28 59 views
0

我想创建JSON数据类似如下格式JSON阵列:使用PHP创建

{ 
    "data": [ 
     { 
      "varient": { 
       "0": "12121221", 
       "1": "22122111" 
      }, 
      "site": "google", 
      "click": "yes" 
     }, 
     { 
      "varient": { 
       "0": "33333", 
       "1": "443434" 
      }, 
      "site": "yahoo", 
      "click": "no" 
     } 
    ] 
} 

我知道json_encode用途,以创造JSON

,但我不如何创建像上面这样的foreach和array_merge JSON格式等[PHP代码]

我的PHP代码

$datalist = array(); 
$datalist[] = array("site" => "google","click" => "yes"); 
$datalist[] = array("site" => "yahoo" ,"click" => "no"); 
$fulljson=array_merge($datalist); 
$return = array('data'=>$fulljson); 
echo json_encode ($return); 

但我怎么能插入的变体光盘d ATA

的变体光盘 “:{” 0 “:” 12121221" , “1”: “22122111”}

+0

所以,只要创建你想要的结构。 – xdazz

+0

json_encode处理多维数组,你不需要做任何for循环 – Tim

+0

这是一个技巧; 'var_export(json_decode($ json,true));'以查看如何在php中重新创建数组结构。 –

回答

1

Som如果我正确理解了代码,就可以这样:

$varient["0"] = 12121221; 
$varient["1"] = 22122111; 

$data["varient"] = $varient; 
$data["site"] = "google"; 
$data["click"] = "yes"; 

$result["data"][]=$data; 


$varient["0"] = 33333; 
$varient["1"] = 443434; 

$data["varient"] = $varient; 
$data["site"] = "yahoo"; 
$data["click"] = "no"; 

$result["data"][]=$data; 

echo json_encode($result); 
0

如果我理解你的问题,你要遍历JSON数据。使用

json_decode($json, true) 

将json转换为PHP数组。

0

你只是想用

json_encode(array('data'=>$your array name)); 
+0

@Melody还指定从哪里获取这些数据,以便我们可以解释你。 – Ricky

+0

检查现在编辑后....我使用Foreach循环获取varient变量 – Me7888

+0

我认为你必须要使用这种类型的代码它会做你的工作echo json_encode(array('data'=> $ fulljson)); – Ricky

0

使用json_decode

$json = '{ "data": [ { "varient": { "0": "12121221", "1": "22122111" }, "site": "google", "click": "yes" }, { "varient": { "0": "33333", "1": "443434" }, "site": "yahoo", "click": "no" } ] }'; 

$object = json_decode($json); 

echo $json->data[0]->varient; 

不是100%肯定,如果这是工作,但它应该尝试一下,告诉我。

+0

thnx重播..但如何可以结合所有数据使用foreach和array_merger – Me7888

0

使用PHP的json_encod E,是这样的:

<?php 
$arr = array(
    array(
     "region" => "valore", 
     "price" => "valore2" 
    ), 
    array(
     "region" => "valore", 
     "price" => "valore2" 
    ), 
    array(
     "region" => "valore", 
     "price" => "valore2" 
    ) 
); 

echo json_encode($arr); 
?> 
0

您需要填充varient阵列

 $varient = array(); 
    // set the array using your for loop 
    .... 
     $varient[] = array('0'=>'value1','1'=>'value2'); 
    .... 

    $datalist = array(); 

后设置varient指数$datalist因为你没有在循环您的问题

 // set each index of $datalist with the appropriate index of $varient array 
    $datalist[] = array("site" => "google","click" => "yes",'varient',$varient[0]); 
    $datalist[] = array("site" => "yahoo" ,"click" => "no" ,'varient',$varient[1]); 

    $fulljson=array_merge($$datalist); 
    $return = array('data'=>$fulljson); 
    echo json_encode ($return); 
+0

我建议你使用for循环来设置'$ datalist'。它会使代码更具可读性并减少行数。 – anurupr