将值从 Smarty PHP 数组推送到 JavaScript 数组

Push values from Smarty PHP array to JavaScript array

我正在循环一个数组,其中有一些来自数据库的数据。我想使用 JavaScript 将这些值保存在一个数组中。我希望数组保持其内容,所以当我在另一个脚本标记中使用它时,它仍然有它的值。我真的卡住了。

{foreach from=$car_owner item=car_pos}
    <script type="text/javascript">
        arr = [
                [{$car_pos['longitude']}, {$car_pos['latitude']}]
              ];
        console.log(arr);
    </script>
{/foreach}

我写的代码将值保存在两个不同的数组中(因为 $car_owner 数组有两个来自数据库的索引)我不希望它发生。当我在另一个脚本标签中输出数组时,它只显示保存在数组中的最后一个索引,而不是全部内容。

** 已解决 **

矢量声明应该在 Smarty 循环之外!

  1. 我不得不改为声明一个向量。
  2. 将每个元素推送到 Smarty 循环中。
arrayPos.push([{$car_pos['longitude']}, {$car_pos['latitude']}]);

试试这个:

<script type="text/javascript">
  let arr=[];
</script>
{foreach from=$car_owner item=car_pos}
<script type="text/javascript">
    arr.push([{$car_pos['longitude']}, {$car_pos['latitude']}]);
</script>
{/foreach}
<script type="text/javascript">
  console.log(arr);
</script>

首先:声明一个数组变量,不要在循环中声明一个变量,因为你的代码会出错:

<script type="text/javascript">
  let arr=[];
</script>

第二步:放入循环代码,然后将循环值放入您之前声明的数组变量中:

{foreach from=$car_owner item=car_pos}
<script type="text/javascript">
    arr.push([{$car_pos['longitude']}, {$car_pos['latitude']}]);
</script>
{/foreach}

(可选)最后:如果你想显示你所有的数组变量值,你可以在循环下面添加console.log,不要把console.log放在循环中,如果你把你的console.log 在循环中,那么你只能看到最后一个循环值:

<script type="text/javascript">
  console.log(arr);
</script>