我正在尝试以格式从数据库中获取数据
["p订单",11],
它将在javascript中回显。我的代码在下面-
<?php
$query = $this->db->query('SELECT *, count(DISTINCT order_id) as total
FROM wp_orders
WHERE order_status="processing"
GROUP BY webname
ORDER BY webname');
foreach ($query->result_array() as $row) {
$Cdata[] = "['".$row->webname."', ".$row->total."]";
}
?>
我想在javascript函数{}中回显
google.setOnLoadCallback(drawChart);
function drawChart() {
var data = google.visualization.arrayToDataTable([
['Task', 'Hours per Day'],
//['Wp-orders', 11],
<?php echo $Cdata; ?>
]);
我不知道我哪里做错了。
不能回显数组。也许你可以把它分解成一个逗号分隔的字符串,比如:
<?php echo implode(',', $Cdata); ?>
编辑
此外,您使用的是返回多维数组的$query->result_array()
,但随后使用对象语法来尝试访问字段。
将查询代码更改为使用$query->result()
:
foreach ($query->result() as $row) {
$Cdata[] = "['".$row->webname."', ".$row->total."]";
}
或者,您可以保留查询并使用数组访问语法:
foreach ($query->result_array() as $row) {
$Cdata[] = "['".$row['webname']."', ".$row['total']."]";
}
如果使用JS,则需要JSON
$a = array('sd', 'sds', 1);
echo json_encode($a); // ["sd","sds",1]
PHP:
$i = 0;
foreach ($query->result() as $row)
{
$Cdata[$i]['webname'] = $row->webname;
$Cdata[$i]['total'] = $row->total;
$i++;
}
JS:
var data = google.visualization.arrayToDataTable([
['Task', 'Hours per Day'],
<?php
$size = sizeof($Cdata);
for($i = 0; $i < $Cdata; $i++)
{
echo "['".$Cdata[$i]['webname']."', ".$Cdata[$i]['total']."]";
if($i != $size-1)
{
echo ",";
}
}
?>
]);
尝试这个
foreach ($query->result_array() as $row) {
if($row->webname && $row->total){
$Cdata[] = array($row->webname=>$row->total);
}
}
var data = google.visualization.arrayToDataTable([
['Task', 'Hours per Day'],
<?php
echo json_encode($Cdata);
?>
]);