PHP Array_merge 不添加逗号

我正在使用 plotly.js 构建指标图,并且正在构建一个分组条形图。

http://img2.mukewang.com/62e39d62000104fd05830296.jpg

不同组中的每个条形代表不同年份的数据。并非所有组都有每年的数据,因此我需要为每个组设置不同的结构。对于这个特定的问题,我需要一组数据看起来像这样


[633, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0].


我有两个单独的 sql 查询拉 633 和 113。然后我通过这样做创建两个不同的数组


$array1 = array($value1, array_fill(1, 2, 0)); 

$array2 = array($value2, array_fill(4, 9, 0));

然后我将这两个数组合并在一起以创建一个数组,我的数据可以发送到图表中。


$finalArray = array_merge($array1, $array2);

产生结果:

http://img4.mukewang.com/62e39d6e0001500702250276.jpg

就数据和顺序而言,它看起来是正确的。但是,我不确定为什么我的数据库中的值没有与该值匹配的键,更大的问题是数组合并的地方缺少逗号,因此值 113 出现在错误的组中我图表中的条形图。

由于 plotly 是一个 javascript 库,因此我发布了将数据发送到 javascript 文件时得到的结果。我通过从 PHP 函数返回数组变量然后在我的 javascript 文件中调用该变量来将 PHP 数据发送到 javascript。

var finalArray = <? echo json_encode($courseData, JSON_PRETTY_PRINT) ?>;

所以我希望我能对为什么缺少逗号和/或我做错了什么有一些了解。


大话西游666
浏览 202回答 3
3回答

12345678_0001

这将构建一个数组,其中第一个元素是单个值,第二个元素是另一个数组:array($value1, array_fill(1, 2, 0))即,你得到这个:[633, [0, 0]]如果你想要这个输出:[633, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0]然后你需要用一堆单一的值来构建数组。您可以通过将多个数组发送到 array_merge() 来做到这一点,这将提取值,然后将它们全部堆叠在一个数组中:$new = array_merge(&nbsp; &nbsp; [$value1],&nbsp; &nbsp; array_fill(1, 2, 0)&nbsp; &nbsp; [$value2],&nbsp; &nbsp; array_fill(4, 9, 0));我不确定“缺少逗号”是什么意思。

喵喔喔

array($value1, array_fill(1, 2, 0));当你想要一个时,你正在制作一个多维数组。您正在使用具有您的编号的第一个值创建一个数组,第二个值是一个数组:(&nbsp; [0] => 633&nbsp; [1] => Array&nbsp; (&nbsp; &nbsp; [1] => 0&nbsp; &nbsp; [2] => 0&nbsp; &nbsp;))然后,数组合并会将这两个多维数组放在一起,得到您当前得到的结果。你会想要这样的东西:$finalArray = array_merge(&nbsp; [$value1],&nbsp; array_fill(1, 2, 0)&nbsp; [$value2],&nbsp; array_fill(4, 9, 0));另外,那个4应该是3吗?

HUWWW

如果您使用的是 PHP 7.4,您还可以array_fill在创建前两个数组时解压缩结果。$array1 = array($value1, ...array_fill(1, 2, 0));&nbsp;$array2 = array($value2, ...array_fill(4, 9, 0));然后array_merge意志按原样工作。或者(除非您需要其他$array1东西$array2)您可以以相同的方式构建最终数组,而无需array_merge.$finalArray = [$value1, ...array_fill(1, 2, 0), $value2, ...array_fill(4, 9, 0)];如果您不使用 PHP 7.4... 没关系。:-)
打开App,查看更多内容
随时随地看视频慕课网APP