2014-01-08 42 views
0

我有两个表名是渠道和部门。如何在php中使用多个数组创建json编码?

$result = mysql_query("SELECT * FROM channels"); 
while($json = mysql_fetch_assoc($result)){ 
    $fetch = mysql_query("SELECT * FROM departments where channelid='".$json['id']."'"); 
    $json2 = array(); 
    while ($row = mysql_fetch_array($fetch)){ 
     $json2[] = array('departmentname' => $row["departmentname"],'departmentid' => $row["did"]  
     ); 
    } 
    $json['department'] = $json2; 
    echo json_encode($json); 
} 

输出继电器:

{ 
    "id": "1", 
    "channelname": "con", 
    "channelurl": "http:\/\/xxx.net\/YY\/", 
    "department": [ 
    { 
     "departmentname": "xxx Travel", 
     "departmentid": "1" 
    }, 
    { 
     "departmentname": "xxxx Virtual Assist", 
     "departmentid": "2" 
    }, 
    "departmentname": "xxx Premier", 
    "departmentid": "3" 
    }, 
    { 
    "departmentname": "xxxx Events", 
    "departmentid": "4" 
    } 
] 
}{ 
"id": "2", 
"channelname": "Slim", 
"channelurl": "http:\/\/xxxxx.net\/slim\/", 
"department": [ 
    { 
    "departmentname": "Virtualvideo", 
    "departmentid": "5" 
    } 
] 
} 

预期结果:

[ 
    { 
    "id": "1", 
    "channelname": "xxxxx", 
    "channelurl": "http://XXXXX.net/yyy/", 
    "department": [ 
     { 
     "departmentname": "XXX Travel", 
     "departmentid": "1" 
     }, 
     { 
     "departmentname": "XXXX Virtual Assist", 
     "departmentid": "2" 
     }, 
     { 
     "departmentname": "XXXX Premier", 
     "departmentid": "3" 
     }, 
     { 
     "departmentname": "XXXX Events", 
     "departmentid": "4" 
     } 
    ] 
    }, 
    { 
    "id": "2", 
    "channelname": "Slim", 
    "channelurl": "http://XXXXXX.net/slim/", 
    "department": [ 
     { 
     "departmentname": "Virtual video", 
     "departmentid": "5" 
     } 
    ] 
    } 
] 
+2

你澄清随e输出结果的差异预期的一个? – revo

+0

可能的重复:http://stackoverflow.com/questions/13205877/php-multidimensional-array-to-json – NewInTheBusiness

+0

看看父对象的第二个数组。 –

回答

1

试试这个:

$json_channel = array(); 
$json_final = array(); 
$result = mysql_query("SELECT * FROM channels"); 
while($json = mysql_fetch_assoc($result)) 
{ 
    $fetch = mysql_query("SELECT * FROM departments where channelid='".$json['id']."'");  
    $json_dept = array(); 

    while ($row = mysql_fetch_array($fetch)) 
    { 
     $json_dept[] = array('departmentname' => $row["departmentname"],'departmentid' => $row["did"]); 
    } 

    $json_channel = array('id' => $json["ch_id"], 'channelname' =>$json["channelname"], 'department' => $json_dept);  

    $json_final[] = $json_channel; 
} 
echo json_encode($json_final); 
+0

感谢它工作正常。 –

0
$output = array(); 
$result = mysql_query("SELECT * FROM channels"); 
while($json = mysql_fetch_assoc($result)){ 

    $fetch = mysql_query("SELECT * FROM departments where channelid='".$json['id']."'"); 
    $json2 = array(); 
    while ($row = mysql_fetch_array($fetch)){ 
     $json2[] = array('departmentname' => $row["departmentname"],'departmentid' => $row["did"]  
     ); 
    } 

    $json['department'] = $json2; 
    $output[] = $json; 
} 
echo json_encode($output);