0

クエリの結果を取得し、json に変換しています。ここで私のコードを参照してください -

$sql = "select * from students";
$query = $this->db->query($sql);
if($query->num_rows() != 0 ){
    $result = $query->result();
    $data = json_encode($result);
}

だから、私の表の学生の2行のデータは次のようになります-

[{"id": "1", "name": "foo", "email": "foo@example.com"}, {"id": "2", "name": "bar", "email": "bar@example.com"}]

したがって、基本的には配列を取得します。しかし、私はそれを次のようにエンコードしたい-

{"1": {"id": "1", "name": "foo", "email": "foo@example.com"}, "2": {"id": "2", "name": "bar", "email": "bar@example.com"}}

したがって、私のデータは index: {key1: val1, key2: val2} のようになります。ここで、index は key1 です。どうすればいいですか?

これのデータの理由は、上記のデータを使用してチェックボックスにIDを与える私のjsです-

destTable = $('#dataTable');
$.post("/examplec/getData",
        params, function(data) {
        var newRow;
        var json = $.parseJSON(data);
        $(json).each(function(i,val){
            newRow = "<tr><td style='right:10px'><input type='checkbox' name = 'case' class = 'case' id=" + i + " onclick='checkAll();'></td>";
            $.each(val,function(k,v){
                newRow = newRow + "<td>" + v + "</td>";
            });
            newRow = newRow + "</tr>";
            destTable.append(newRow);
        });

});

MVC パターンからのモデルは、コントローラーexamplec.phpにデータを返します。しかし、各チェックボックスのIDデータのIDにしたいのです。

4

3 に答える 3

3

PHP 5.3 以降では、次のことができます。

$data = json_encode($result, JSON_FORCE_OBJECT);

マニュアルから:

JSON_FORCE_OBJECT
非連想配列が使用されている場合、配列ではなくオブジェクトを出力します。出力の受信者がオブジェクトを期待しており、配列が空の場合に特に役立ちます。PHP 5.3.0 以降で利用可能です。

編集: ID をキーとして使用する必要はありません。データを複製しているだけです。プロパティにアクセスしidて、チェックボックス ID として割り当てることができます。

newRow = "<tr><td style='right:10px'><input type='checkbox' name = 'case' class = 'case' id='" + val.id + "' onclick='checkAll();'></td>";
于 2012-12-18T11:39:57.477 に答える
2

あなたはこのように行くことができます:

$results = $query->result();

$data = array();

foreach($results as $result)
{
    // Assuming it returns objects, not arrays, else use $result["id"]
    $data[$result->id] = $result;
}

echo json_encode($data);
于 2012-12-18T11:37:46.133 に答える
0
$sql = "select * from students";
$query = $this->db->query($sql);
$res=array();
if($query->num_rows() != 0 ){
    $result = $query->result();
    $res[]=$result;

}
$data = json_encode($res);
于 2012-12-18T11:44:46.237 に答える