为所有json_encode()数据添加一个公共单词

时间:2015-06-17 16:03:20

标签: php mysql json pdo

我正在使用json_encode()从MySQL检索数据。

$sd=array();
foreach($rslt as $val){
     $sd[] = $val; 
}
echo json_encode($sd);

我的问题是如何在所有结果中加入“等级”一词?

示例:如果输出为

97
38
73

如何获得结果:

grade97
grade38
grade73

示例Json输出:

[{"physics":"97","0":"97","chemistry":"38","1":"38","agriculture":"73","2":"73"}]

2 个答案:

答案 0 :(得分:2)

您不应该像这样污染您的数据,因为您将来可能需要原始值,并且您将发送大量冗余信息(重复的单​​词)。

相反,我会在另一个参数中添加您要发送的其他信息。

例如:

$sd=array();
foreach($rslt as $val){
     $sd[] = $val; 
}

// add another chunk of information
$translations = array('grade' => 'Grade');

// send everything in one json string
echo json_encode(array('data' => $sd, 'translations' => $translations));

现在,您可以在接收端正确构建输出,发送的信息更少,并且如果需要,您可以使用原始值。

答案 1 :(得分:1)

您需要做的就是连接字符串,如下所示:

foreach($rslt as $val){
    foreach($val as &$grade){
         $grade = "Grade ".$grade;
    }
    $sd[] = $val;
}

但是,您应该清理阵列。您目前拥有以下结构:

array(
    array(
        "0" => 97,
        "1" => 38,
        "2" => 73,
        "physics" => 97,
        "chemistry" => 38,
        "agriculture" => 73,
    )
);

我会重做生成此数组的代码,以便得到类似的内容:

array(
    array(
        "class" => "physics",
        "grade" => 97
    ),
    array(
        "class" => "chemistry",
        "grade" => 38
    ),
    array(
        "class" => "agriculture",
        "grade" => 73
    ),
);

它更适合迭代,并且更具可读性。