使用PHP手动创建JSON字符串

时间:2013-02-05 16:06:19

标签: php arrays json string

我正在尝试构建一个多维对象,其中包含一些从MySQL表构建的数组,我还想附加一个JSON字符串表示,但是我对逻辑有一些问题。星期二早上,我的大脑没有全力工作。

我需要以2种形式提供数据中的数据。作为普通的PHP数组和JSON字符串,但是我的JSON字符串无效,我无法找到更好的方法。也许有人在那里有一个很好的解决方案。

这是我到目前为止所做的。

    function buildFields(){
        $db = new DB_Connection();  //connect to db
        $sql ="SHOW FULL COLUMNS FROM contact_form"; //get table info
        $result = $db->query($sql,"website"); 
        if (!$result) return "ERROR:".$db->getError();
        $data['json_string'] = "{\"fields\":[";  //open Json string
        while($row = $result->getNext()){
            $data['fields'] []= $row['Field']; // add field name
            $data['comments'] []= $row['Comment']; // add field comment
            $data['json_string'] .= "\"".$row['Field']."\",".$row['Comment'].","; //build JSON string
        }
        $data['json_string'] .= "]}";
        return $data;
    }

我认为问题是最后的逗号,但我不知道如何摆脱它,因为我不知道表的大小或可能在其中的字段数。所以我想这真的归结为你如何从最后删除最后一个逗号?

任何帮助都会很棒,谢谢

2 个答案:

答案 0 :(得分:1)

您的引用$row['Comment']未被引用。另外,您需要修剪最后,

$data['json_string'] = "{\"fields\":[";  //open Json string
while($row = $result->getNext()){
    //...
    $data['json_string'] .= "\"".$row['Field']."\",\"".$row['Comment']."\","; //build JSON string
}
$data['json_string'] = rtrim($data['json_string'], ",") . "]}";

答案 1 :(得分:1)

你可以尝试

    $stringJSON['fields'] = array();
    while($row = $result->getNext()){
        //your other code here
        $stringJSON['fields'] = $row['Field'];
        $stringJSON['fields'] = $row['Comment'];
    }
    $data['json_string'] = json_encode($stringJSON);