【问题标题】:Push values from Smarty PHP array to JavaScript array将值从 Smarty PHP 数组推送到 JavaScript 数组
【发布时间】:2020-10-13 19:40:52
【问题描述】:

我正在循环一个数组,其中包含一些来自 db 的数据。我想使用 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 数组有两个来自 db 的索引),我不希望它发生。当我在另一个脚本标签中输出数组时,它只显示保存在数组中的最后一个索引,而不是全部内容。

【问题讨论】:

    标签: javascript php arrays smarty


    【解决方案1】:

    试试这个:

    <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>
    

    【讨论】:

    • 请在您的答案中添加一些解释,以便其他人可以从中学习。是否有充分的理由为每个项目使用单独的 &lt;script&gt; 标签?
    • on foreach 数据将是循环的,因此如果将 arr 放在中间
    • 请通过编辑将所有解释添加到您的答案中
    【解决方案2】:

    ** 已解决 **

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-14
      • 2017-06-17
      • 1970-01-01
      相关资源
      最近更新 更多