2015-10-15 128 views
0

我有一个JSON数组新元素添加到JSON数组

{ 
    "cms18.test.silverbee.nl": { 
    "domain": "cms18", 
    "template": "default" 
    }, 
    "dmmd.test.silverbee.nl": { 
    "domain": "dmmd", 
    "template": "default" 
    }, 
    "opmaat.test.silverbee.nl": { 
    "domain": "opmaat", 
    "template": "opmaat" 
    }, 
    "opmaatdebiteurenadvies.nl": { 
    "domain": "opmaat", 
    "template": "opmaat" 
    }, 
    "navbar.test.silverbee.nl": { 
    "domain": "navbar", 
    "template": "default" 
    }, 
    "test18.test.silverbee.nl": { 
    "domain": "test18testsilverbeenl", 
    "template": "test" 
    }, 
    "huisartsplus.test.silverbee.nl": { 
    "domain": "huisartsplustestsilverbeenl", 
    "template": "huisartsplus" 
    }, 
    "robertenrademaker.test.silverbee.nl": { 
    "domain": "robertenrademakertestsilverbeenl", 
    "template": "robert-en-rademaker" 
    }, 
    "tilburg.test.silverbee.nl": { 
    "domain": "tilburgtestsilverbeenl", 
    "template": "default" 
    }, 
    "cbk-groningen.test.silverbee.nl": { 
    "domain": "cbk_groningentestsilverbeenl", 
    "template": "cbk-groningen" 
    }, 
    "getbusyinc.test.silverbee.nl": { 
    "domain": "getbusyinctestsilverbeenl", 
    "template": "getbusyinc" 
    } 
} 

,我得到了一个PHP脚本,获取输入值将新元素从上面我不知道这是否是推到JSON数组oke,但是当我尝试推送它时,我得到一个0,输入值在它旁边。

<?php 
    $url = $_POST['new_url']; 
    $t_d = $_POST['t_d']; 
    $t_t = $_POST['t_t']; 
    $str = $url.":{"."domain:".$t_d.","."template:".$t_t."},"; 
      if (isset($url)) 
      { 
      array_push($list, $str); 
      } 
    ?> 
+0

它不是一个JSON数组,它是一个哈希值。你不应该推入它 - 但设置适当的价值新钥匙。 – Alex

+0

你不添加到JSON。您将json解码为本地结构,将新的东西添加到该结构中,然后重新编码为json。你拥有的不是一个数组('[[...]')。你有一个对象('{...}')。 –

+0

http://pastebin.com/Q7Eqve1K –

回答

2

如果这真是一个JSON数组,你应该尝试的字符串解码成数组:

<?php 
$decoded_list = json_decode($list, true); 
?> 

然后就推新元素到数组? 最后,你可以做

<?php 
$list = json_encode($decoded_list); 
?> 
0
$str = $url.":{"."domain:".$t_d.","."template:".$t_t."},"; 
$str = json_decode($str); 

      if (isset($url)) 
      { 
      array_push($list, $str); 
      } 
0

首先,解码你的JSON:

$list = json_decode($list, true); 

然后,创建你的用户输入值的数组(下面简单的例子):

$url = "google.com"; 
$t_d = "google"; 
$t_t = "googletwo"; 

$data[] = $url; 
$data[] = array('domain' => $t_d, 'template' => $t_t); 

追加数据:

if(isset($url)){ 
    array_push($temp, $data); 
} 

最后,编码回JSON像这样:

$json = json_encode($data); 

输出:

[ 
    "google.com", 
    { 
    "domain": "google", 
    "template": "googletwo" 
    } 
]