2015-10-24 85 views
0

我正在修改在输出JSON格式的服务器上使用PHP的应用程序。在while循环和foreach循环中创建JSON php

{"by":"Industrie LLC","dead":false,"descendants":396,"id":"396","kids":[1,396],"score":396,"time":"396","title":"Industrie LLC","type":"comment","url":"www.nytimes.com"} 

因为它是我得到的MySQL数据的最后一列。我知道这是循环的东西,但我不知道具体是什么。

我的PHP代码是在这里

$sql_metro_company_doc_legal = "SELECT * FROM ".$configValues['CONFIG_DB_TBL_PRE']."posts where post_type='company'"; 
$res_metro_company_doc_legal = $dbSocket->query($sql_metro_company_doc_legal); 

while($row_metro_company_doc_legal = $res_metro_company_doc_legal->fetchRow()) { 
    $notice2[] = $row_metro_company_doc_legal[5]; 
    $notice8[] = strtotime($row_metro_company_doc_legal[0]); 
    $notice9[] = $row_metro_company_doc_legal[0]; 
    $notice3[] = $row_metro_company_doc_legal[0]; 
    $notice = array("id" => "".$row_metro_company_doc_legal[1]."","title"=>"".$row_metro_company_doc_legal[0].""); 
    $notice10[] = $row_metro_company_doc_legal[0]; 
    $notice6[] = $row_metro_company_doc_legal[0]; 
    $notice11[] = $row_metro_company_doc_legal[5]; 
    $notice7[] = strtotime($row_metro_company_doc_legal[2]); 
    $notice12[] = 'www.nytimes.com'; 
    $notice7[] = "comment"; 
} 
foreach ($notice2 as $status2) { 
    $_page['by'] = $status2; 
} 
foreach ($notice8 as $status8) { 
    $_page['dead'] = $status8; 
} 
foreach ($notice9 as $status9) { 
    $_page['descendants'] = (int)$status9; 
} 
foreach ($notice3 as $status3) { 
    $_page['id'] = $status3; 
} 
foreach ($notice as $status) { 
    $_page['kids'][] = (int)$status; 
} 
foreach ($notice10 as $status10) { 
    $_page['score'] = (int)$status10; 
} 
foreach ($notice6 as $status6) { 
    $_page['time'] = $status6; 
} 
foreach ($notice11 as $status11) { 
    $_page['title'] = $status11; 
} 
foreach ($notice7 as $status7) { 
    $_page['type'] = $status7; 
} 
foreach ($notice12 as $status12) { 
    $_page['url'] = $status12; 
} 
foreach ($notice4 as $status4) { 
    $_page['parent'] = (int)$status4; 
} 
foreach ($notice5 as $status5) { 
    $_page['text'] = $status5; 
}    

//sets the response format type 
header("Content-Type: application/json"); 

//converts any PHP type to JSON string 
echo json_encode($_page); 
+0

每次通过'foreach'循环时,您都将分配给相同的变量。在循环结束时,它将具有来自最后一个元素的值。你想要得到的JSON看起来像什么? – Barmar

+0

我想要的是这样的:{“by”:“Industrie LLC”,“dead”:false,“后代”:396,“id”:“396”,“kids”:[1,396],“score”:396 ,“time”:“396”,“title”:“Industrie LLC”,“type”:“comment”,“url”:“www.nytimes.com”} –

+0

为什么不在while循环中创建一个数组? – aldrin27

回答

1

你需要做一个2维数组中$_page

$_page = array(); 
foreach ($notice2 as $i => $status) { 
    $_page[] = array(
     'by' => $status, 
     'dead' => $status8[$i], 
     'descendants' => (int)$status9[$i], 
     'id' => $status3[$i], 
     // and so on for the rest 
    ); 
} 
header ("Content-type: application/json"); 
echo json_encode($_page);