2011-06-28 42 views
2

我有如下一個PHP頁面:Json的PHP/MySQL的輸出

$sql = "select code as ref, size from product"; 

$result = mysql_query($sql); 

    while($rs=mysql_fetch_assoc($result)){ 

     $test[] = $rs; 
    } 

$output['data'][] = $test; 

echo json_encode($output); 

此。OUPUTS如下:

{"data":[[{"ref":"ABC","size":"Large"},{"ref":"123","size":"Medium"}]]} 

我需要修改PHP,這樣我可以前的前綴一些字符裁判值,從而例如:

REF:ABC應該是M-ABC

REF:123應該是M-123

最後,我也想追加項目添加到陣列中,如描述,這將有一個固定的描述,例如「該產品是在大可用」(該價值是基於大小)。

感謝

+2

爲什麼不只是修改$ output數組,然後對其進行編碼? – Tarek

回答

0
while ($rs = mysql_fetch_assoc($result)) { 
    $rs['ref'] = "M-$rs[ref]"; 
    $rs['description'] = "This product is available in $rs[size]"; 
    $test[] = $rs; 
} 
+0

謝謝,我應該知道這一點,但自從我做了任何開發工作以來,這已經很長時間了。我很感激幫助。 – Dino

0

而不是修改PHP和必須改變在一個循環中你的價值觀,更不同尋常,但整潔的方法是修改SQL,並執行字符串前綴有:

// Changed to a HEREDOC string for readability 
$sql =<<<SQL 
    select CONCAT('M-', code) as ref, 
    size, 
    CASE 
    WHEN (size = 'large') THEN 'this product is available in large' 
    WHEN (size = 'small') THEN 'this product is available in small' 
    WHEN (size = 'someotherone') THEN 'this product...etc.etc.' 
    END AS size_description 
    from product; 
SQL; 

現在,在您提取記錄後,現在不需要PHP中的進一步後處理。您可以將數組從您的提取循環直接傳遞到json_encode()

+1

取決於。如果您打算將您的應用本地化,那麼在SQL中生成最終用戶輸出並不是真正的選擇。 – deceze

+0

謝謝邁克爾,但欺騙是正確的更好的做到這一點在PHP中。 – Dino