PHP项目中QuickChart如何加载外部数组数据并解决转换报错
问题原因
报错是因为你直接将PHP数组$data放入双引号包裹的字符串中,PHP会尝试将数组转为字符串,默认只会输出Array而非你需要的数组格式内容,同时抛出数组转字符串的提示。
解决方案
方案1(推荐):先构建PHP配置数组,再统一转JSON格式
该方式不需要手动拼接字符串,可完全避免JSON语法错误,适合所有动态数据场景:
<?php require_once('QuickChart.php'); $qc = new QuickChart(); $data = array(50, 60, 70, 180); // 把整个配置写成PHP数组 $config = [ 'type' => 'bar', 'data' => [ 'labels' => ['Q1', 'Q2', 'Q3', 'Q4'], 'datasets' => [ [ 'label' => 'Users', 'data' => $data ] ] ] ]; // 转成JSON字符串传给setConfig $qc->setConfig(json_encode($config)); $a = $qc->getUrl(); $imageData = base64_encode(file_get_contents($a)); echo '<img src="data:image/jpeg;base64,'.$imageData.'">'; ?>
方案2:单独对$data数组做JSON转码后拼接
如果不想修改原有字符串写法,只需要把数组转成符合JSON格式的字符串再插入即可:
<?php require_once('QuickChart.php'); $qc = new QuickChart(); $data = array(50, 60, 70, 180); // 先把数组转成符合JSON格式的字符串 $jsonData = json_encode($data); $qc->setConfig("{ type: 'bar', data: { labels: ['Q1', 'Q2', 'Q3', 'Q4'], datasets: [{ label: 'Users', data: $jsonData }] } }"); $a = $qc->getUrl(); $imageData = base64_encode(file_get_contents($a)); echo '<img src="data:image/jpeg;base64,'.$imageData.'">'; ?>
内容的提问来源于stack exchange,提问作者peikado
相关产品推荐
相关产品推荐

