在Javascript函数Var中以echo格式获取数据

Fetch data in format echo in Javascript function Var

本文关键字:格式 获取 数据 echo 中以 Javascript 函数 Var      更新时间:2023-09-26

我正在尝试以格式从数据库中获取数据

["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);
  ?>
]);