我打算将mysql结果重新安排到json中,并使用与hansontable一起使用的格式。 根据这个问题:Find string position and join another table's row。奥拉夫先生有他的才华。我试着靠自己做。是的 - 这不行。这是我的代码:
$sql_rCost="select date,
substring_index(cost, '-', 1) type_a,
case when cost regexp '.*-' then
substring_index(substring_index(cost, '-', 2), '-', -1)
else ''
end type_b,
case when cost regexp '.*-.*-' th substring_index(substring_index(cost, '-', 3), '-', -1)
else ''
end type_c,
case when cost regexp '.*-.*-.*-' then
substring_index(substring_index(cost, '-', 4), '-', -1)
else ''
end type_d,
case when cost regexp '.*-.*-.*-.*-' then
substring_index(substring_index(cost, '-', 5), '-', -1)
else ''
end type_e
from room_rate_cost where rate='2' and hotel='1' and date between '2012-11-01' and '2012-11-31' order by date asc
";
$result_rCost=mysql_db_query($dbname,$sql_rCost);
while($rec_rCost=mysql_fetch_array($result_rCost)){
$_rCostDBdate=$rec_rCost['date'];
$_rCostDBtypea=$rec_rCost['type_a'];
$_rCostDBtypeb=$rec_rCost['type_b'];
$_rCostDBtypec=$rec_rCost['type_c'];
$_rCostDBtyped=$rec_rCost['type_d'];
$_rCostDBtypee=$rec_rCost['type_e'];
$_rCostDBcost[]=$rec_rCost['cost'];
$_array[]=array( $_rCostDBdate,$_rCostDBcost);
}
echo "{\"data\": [".json_encode($_array)."]}";
执行后,返回的是:
{"data": [[["2012-11-01",[null]],["2012-11-02",[null,null]],["2012-11-03",[null,null,null]],["2012-11-04",[null,null,null,null]],["2012-11-05",[null,null,null,null,null]],["2012-11-06",[null,null,null,null,null,null]],["2012-11-07",[null,null,null,null,null,null,null]],["2012-11-08",[null,null,null,null,null,null,null,null]],["2012-11-09",[null,null,null,null,null,null,null,null,null]],["2012-11-10",[null,null,null,null,null,null,null,null,null,null]],["2012-11-11",[null,null,null,null,null,null,null,null,null,null,null]],["2012-11-12",[null,null,null,null,null,null,null,null,null,null,null,null]],["2012-11-13",[null,null,null,null,null,null,null,null,null,null,null,null,null]],["2012-11-14",[null,null,null,null,null,null,null,null,null,null,null,null,null,null]],["2012-11-15",[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],["2012-11-16",[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],["2012-11-17",[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],["2012-11-18",[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],["2012-11-19",[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],["2012-11-20",[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],["2012-11-21",[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],["2012-11-22",[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],["2012-11-23",[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],["2012-11-24",[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],["2012-11-25",[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],["2012-11-26",[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],["2012-11-27",[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],["2012-11-28",[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],["2012-11-29",[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]],["2012-11-30",[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null]]]]}
预期格式为:
{
"data": [
["", "type_a", "type_b", "type_c", "type_d", "type_e"],
["2011-11-01", 4700, 5500, 6100, 6600, 7300],
["2011-11-02", 4700, 5500, 6100, 6600, 7300],
["2011-11-03", 4700, 5500, 6100, 6600, 7300],
...
["2011-11-30", 4700, 5500, 6100, 6600, 7300],
]
}
答案 0 :(得分:1)
我会改变数组创建:
$_array[]=array($_rCostDBdate,$_rCostDBcost);
为:
$_array[]=array($_rCostDBdate, $_rCostDBtypea, $_rCostDBtypeb, $_rCostDBtypec,
$_rCostDBtyped, $_rCostDBtypee);
并且会遗漏这条线:
$_rCostDBcost[]=$rec_rCost['cost'];
因为在查询结果中,没有名为cost
的列。
如果您将查询更改为mysql_fetch_array($result_rCost, MYSQL_NUM)
,则可以将循环缩减为:
while ($rec_rCost = mysql_fetch_array($result_rCost, MYSQL_NUM)) {
$_array[] = $rec_rCost;
}
<强>更新强>: 要添加标题行,只需在循环之前插入:
$_array[] = array('', 'type_a', 'type_b', 'type_c', 'type_d', 'type_e');