2015-05-20 94 views
0

我想获得类似于将数据添加到数组上的内容,但是当我使用此方法时,会在json元素中创建两个节点。我只想要一个包含所有实体的节点,还可以命名节点,即属性。Json数组添加到php数组

$json = array(); 

while($row = mysql_fetch_assoc($sth)) { 
    $json['name'] = $row['name']; 
    $json['id'] = $row['id']; 
    $data[] = $json; 
} 

$custom = array('name'=>'foo', 'id' => 'bar'); 
$data[] = $custom; 
+0

你可以添加你得到什么,你期待? – Naruto

+0

像这样'{name:[“foo”,“bar”],id:[1,2]}'??? – Girish

回答

0

试试这个代码array_push是更好的选择,在这里,

<?php 
    $json = array(); 

    while($row = mysql_fetch_assoc($sth)) { 
     $temp = array(); 
     $temp = array('name' => $row['name'], 'id' => $row['id']); 
     array_push($json, $temp); 
    } 

    $custom = array('name'=>'foo', 'id' => 'bar'); 
    array_push($json,$custom); 

    ?> 
+0

为什么'array_push()'更好?这只是一个额外的函数调用。与$ json [] ='相同。你为什么要初始化'$ temp'两次? – TiMESPLiNTER

+0

这很容易理解$ json ['name'] = $ row ['name']; $ json ['id'] = $ row ['id']; $ data [] = $ json; OR $ temp = array(); $ temp = array('name'=> $ row ['name'],'id'=> $ row ['id']); array_push($ json,$ temp); –

+0

key由array_push自动维护{$ custom = array('name'=>'foo','id'=>'bar'); array_push($ json,$ custom); } –