javascript - PHP数组转JS数组并重构

标签 javascript php arrays

我有两个看起来像这样的 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/

相关文章:

javascript - 如何使用户能够有效地将 indexedDB 对象存储的内容保存到文件中?

php - 如何在没有内存错误的情况下使用 var_dump + 输出缓冲?

php - MySQL INNER JOIN 在登录时使用 OR

arrays - 如何在 Scala 中获得 Ponter/Reference 语义

javascript - 传递的函数有一个变量不起作用

javascript - 从 laravel blade 调用 vue 方法

javascript - 模态接收错误数据

php - Laravel 数据库查询错误

php - 在 MySQL/PHP 查询中有效显示 strtotime()

java - 排序数组中的线性搜索 - Java