向JSON数组添加索引时,数据表中断


Datatable breaks when adding indexes to JSON array

我有一个数据表,它从转换为JSON数组的php数组中填充,当我从数据库中按原样提取字段时,一切都很好,但我想添加一些计算字段作为最后几列,所以我在php中这样做了:

foreach ($in as $id){
    $query = $link->prepare("SELECT provider_num, provider_name, 233_net_charity_care, 291_cost_of_non_mcr_bad_debts, 301_cost_of_uncomp_care
                FROM `s10`
                            WHERE `id` = :id");
    $query->bindParam(':id', $id, PDO::PARAM_INT);
    $query->execute();
    $results = $query->fetch(PDO::FETCH_ASSOC);
    if($results['301_cost_of_uncomp_care'] != 0){
                $charityPortion = ($results['233_net_charity_care'] / $results['301_cost_of_uncomp_care']);
                $baddebtPortion = ($results['291_cost_of_non_mcr_bad_debts'] / $results['301_cost_of_uncomp_care']);
                } else {
                    $charityPortion = 0;
                    $baddebtPortion = 0;
                }
    $data[] = $results;
    /*$data['charityPortion'] = $charityPortion;
    $data['baddebtPortion'] = $baddebtPortion;*/
}

然后它变成一个json变量,传递到数据表init var tableData = <?php echo json_encode($data); ?>;

然后我用json:初始化数据表

$('#compTab').dataTable({
        "aaData": tableData,                               
        "aoColumns": [
            { "data": "provider_num" },
            { "data": "provider_name" },
            { "data": "233_net_charity_care" },
            { "data": "291_cost_of_non_mcr_bad_debts" },
            { "data": "301_cost_of_uncomp_care" }
            /*{ "data": "charityPortion"},
            { "data": "baddebtPortion"}*/
        ]
    });

目前,我已经注释掉了最后两列,因为每次我将它们添加到数据数组中时,datatables都会报告没有找到任何数据,尽管当我回显JSON时,值会显示在正确的位置。

我的问题是:这两个变量中是否有我遗漏的东西导致数据表出错?我有一种感觉,我可能会以某种方式将它们作为物体传递,但我认为json_encode() 涵盖了这一点

对此有任何见解都会很棒。

提前感谢

为什么不直接在SQL字符串中计算charityPartition和baddebtPartition?然后,它将成为$results:的一部分

SELECT  provider_num, provider_name, 233_net_charity_care, 
        291_cost_of_non_mcr_bad_debts, 301_cost_of_uncomp_care,
        if('301_cost_of_uncomp_care' != 0, 
            ('233_net_charity_care' / '301_cost_of_uncomp_care'), 0) As charityPortion,
        if('301_cost_of_uncomp_care' != 0, 
            ('291_cost_of_non_mcr_bad_debts' / '301_cost_of_uncomp_care'),0) As baddebtPortion
FROM `s10`
WHERE `id` = :id