我有两个看起来像这样的 PHP 字符串(显然针对问题而缩短了):
$year [
[0]=>2003
[1]=>2003
[2]=>2004
[3]=>2004
[4]=>2005
[5]=>2005
]
$cost [
[0]=>200
[1]=>300
[2]=>400
[3]=>500
[4]=>410
[5]=>510
]
我需要将上面的 PHP 数组转换为 JAVASCRIPT 数组,格式如下:
var newData=[
['2003', 200,300],
['2004', 400,500],
['2005', 410,510]
];
当我隐式输入 JS 数组时(如上所述),一切正常(即图形渲染正确)。然而,在尝试了几个小时的不同方法之后,我无法弄清楚如何以所示的 JS 数组格式轻松地动态生成 newData 数组(即从如图所示的 PHP 数组)。
最佳答案
你的任务可以分为两个任务: 首先,您要合并两个数组。我猜你想根据他们拥有的 key 来执行此操作。 PHP 中有多个函数可以实现此目的,例如 array_combine 或 array_reduce。 但对于您的情况,最简单的方法是 for_each 循环,因为 $year 数组中有重复的值。
$combined_array = [];
foreach ($year as $id => $year_val) {
if (!array_key_exists($year_val, $combined_array)) {
$combined_array[$year_val] = [(string)$year_val];
}
$combined_array[$year_val][] = $cost[$id];
}
现在您已经将年份作为键,这是您不想要的,因此您可以使用 array_values
再次删除键。
$combined_array = array_values($combined_array);
第二个任务非常简单:转到 PHP 文件,该文件加载要向其提供数组的脚本。在加载脚本之前添加此内容:
<script>
var myPhpArray = <?php echo json_encode($combined_array) ?>;
</script>
之后,可以通过 JS 访问变量 `myPhpArray 中的 PHP 数组。
关于javascript - PHP数组转JS数组并重构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47491821/