我正在构建税收计算器,我已经能够为一个键构建一个JSON对象。 我需要扩展它以再有 3 个对象,但我遇到了麻烦。
目前,我可以这样做做净收入:
$a = array();
$a_json = array();
$a_json_row = array();
$a_json_row2 = array();
$a_json_final = array();
if ($queryIndexData) {
while($row = mysql_fetch_array($queryIndexData)) {
$person = $row['person'];
$netincome = $row['NetIncome'];
$statetax = $row['StateTax'];
$fedtax = $row['FedTax'];
$totaltax = $row['TotalTax'];
$a = array(
'label' => $person,
'value' => $netincome * 1,
);
array_push($a_json, $a);
}
$a_json_row2[key] = 'Net Income';
$a_json_row2[values] = $a_json;
array_push($a_json_final, $a_json_row2);
// jQuery wants JSON data
echo json_encode($a_json_final);
它不是很干净,我硬编码了密钥。 如何从$netincome、$statetax、$fedtax和$totaltax变量动态生成密钥?
所以我的 JSON 看起来像:
var tax_data = [
{
key: 'Net Income',
values: [
{
"label" : "John Doe" ,
"value" : 1000000
} ,
{
"label" : "Jane Doe" ,
"value" : 1500000
} ,
]
},
{
key: 'State and City Taxes',
values: [
{
"label" : "John Doe" ,
"value" : 1000000
} ,
{
"label" : "Jane Doe" ,
"value" : 1500000
} ,
]
},
{
key: 'Federal Taxes',
values: [
{
"label" : "John Doe" ,
"value" : 1000000
} ,
{
"label" : "Jane Doe" ,
"value" : 1500000
} ,
]
},
{
key: 'Total Due',
values: [
{
"label" : "John Doe" ,
"value" : 1000000
} ,
{
"label" : "Jane Doe" ,
"value" : 1500000
} ,
]
}
];
这样的事情应该可以工作,尽管这是一种相当奇怪的数据排列方式。请注意,构造$array[] = 1
与 array_push($array, 1)
相同(并且比 更常见(。另外,不要使用mysql_*
函数。
$keys = array(
"NetIncome"=>"Net Income",
"State Tax"=>"State and City Taxes",
"FedTax"=>"Federal Taxes",
"TotalTax"=>"Total Due"
);
while($row = mysql_fetch_array($queryIndexData)) {
foreach ($keys as $column=>$keys) {
$a_json[$column][] = array(
'label' => $row["person"],
'value' => $row[$column] * 1,
);
}
}
foreach ($keys as $column=>$key) {
$a_json_final[] = array(
"key"=>$key,
"values"=>$a_json[$column]
);
}
// jQuery wants JSON data
echo json_encode($a_json_final);