javascript - PHP 脚本不断以字符串形式返回数值

标签 javascript php arrays

我有 PHP 脚本,它与 mySQL 数据库建立连接,该数据库进行查询并返回数据,然后循环遍历并添加到数组中。这是我的 php 脚本:

<?php
// Database credentials
$dbHost = 'localhost';
$dbUsername = 'demo';
$dbPassword = 'demo';
$dbName = 'syndicationdashboard';
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');

// Create connection and select db
$db = new mysqli($dbHost, $dbUsername, $dbPassword, $dbName);

// Get data from database
$sql = "select Priority,Automated,isAutomatable,isNotAutomatable from automation_progress where platform = 'Cox' and update_date in (select MAX(update_date) FROM automation_progress) order by priority";

$data = array();

if ($result = mysqli_query( $db, $sql )){
    while ($row = mysqli_fetch_assoc($result)) {
        $data[] = $row;
      }
    }

   $newData = array();
   $firstLine = true;

   foreach ($data as $dataRow)
   {
        if($firstLine)
        {
           $newData[] =array_keys($dataRow);
           $firstLine = false;
        }
      $newData[] = array_values($dataRow);
   }

#return $newData;
echo json_encode($newData);
mysqli_close($db);
?>

这是该脚本的输出:

[["Priority","Automated","isAutomatable","isNotAutomatable"],["All","216","860","44"],["P1","213","567","34"],["P2","1","148","6"],["P3","2","136","3"],["P4","0","7","1"],["P5","0","2","0"]]

最后,我进行 ajax 调用以从脚本中获取数据并将数据加载到 Google 图表中。

  <script type="text/javascript">
     google.charts.load('current', {'packages':['bar']});
     google.charts.setOnLoadCallback(drawChart);

     function drawChart() {

       jQuery.ajax({
           method: "POST",
           dataType: "JSON",
           url: "http://10.21.124.252:8080/automationBarDataCox.php",
           success: function (jsonData) {
             var data = google.visualization.arrayToDataTable(jsonData);

             var options = {
               chart: {
                 title: 'Automation Performance',
               },
               vAxes: {
                0: {title: 'Automated'},
              },
               legend: { position: 'left'},
               bars: 'vertical',
             };

             var chart = new google.charts.Bar(document.getElementById('cox_barchart'));

             chart.draw(data, google.charts.Bar.convertOptions(options));
           }
       });

     }
  </script>

加载图表时返回的数据会导致问题,因为数字以字符串而不是数字的形式返回。关于如何解决此问题有什么想法吗?

最佳答案

mysqli_fetch_assoc() 返回字符串的关联数组。如果您希望将值输入为整数,则必须做一些额外的工作:

if ($result = mysqli_query($db, $sql)) {
    while ($row = mysqli_fetch_assoc($result)) {
        if (count($data) === 0) {
            $data[] = array_keys($row);
        }

        $data[] = [
            $row['Priority'],
            intval($row['Automated']),
            intval($row['isAutomatable']),
            intval($row['isNotAutomatable']),
        ];
    }

    mysqli_close($db);

    echo json_encode($data);
}

这也消除了不必要的循环。

关于javascript - PHP 脚本不断以字符串形式返回数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51268414/

相关文章:

javascript - 是否可以为 Angular 2 的 ng-switch 设置动画

javascript - Android Webview 内部的 ES6 导入 - 不是构造函数错误

php - Case 语句输出不正确?

php - 如何有效地插入完全相同的行保存一个变化的列?

c - 将整数指针设置为整数数组并将参数传递给 pthread_create

java - 在 Java 中添加与 vector 不同的对象的最优雅的方法

javascript - eCharts 堆叠条形图 - Y 轴

javascript - 在 Angular 2 + TypeScript 中深度复制数组

php - 如何在没有 root 访问权限的 Linux 上的非标准文件夹中安装 PHP SSH2 扩展

C 程序在程序结束时返回随机字符? (最后一个功能)