【问题标题】:javascript variable declaration from php array value来自php数组值的javascript变量声明
【发布时间】:2019-03-24 16:45:47
【问题描述】:

我在 php 中得到了一个由 sql 查询产生的多维数组。 我很感兴趣如何使用数组中的第一个值作为 javascript 中新变量的名称,并将数组中的第二个值分配为新创建的变量的值。

我试过的是这个

  foreach ($language_array as $value) {


echo "<script> var ".$value[0]." = ". $value[1]."; </script>";

}

但是当我尝试使用 document.write(变量)时;它是未定义的。

 Array
(
    [0] => Array
        (
            [0] => el1
            [1] => Grouping
        )

    [1] => Array
        (
            [0] => el2
            [1] => Type
        )

    [2] => Array
        (
            [0] => el3
            [1] => Starting Date
        )

    [3] => Array
        (
            [0] => el4
            [1] => Ending Date
        )

    [4] => Array
        (
            [0] => el5
            [1] => Section
        )

    [5] => Array
        (
            [0] => el6
            [1] => Cell
        )

    [6] => Array
        (
            [0] => el7
            [1] => Client
        )

    [7] => Array
        (
            [0] => el8
            [1] => Status
        )

    [8] => Array
        (
            [0] => el9
            [1] => Article
        )

    [9] => Array
        (
            [0] => el10
            [1] => Search
        )

)

谢谢

欧文

【问题讨论】:

  • 您可能希望包含数组中的内容并查看 PHP 实际打印出的内容。
  • 请发布数组..
  • 数组 ( [0] => 数组 ( [0] => el1 [1] => 分组 ) [1] => 数组 ( [0] => el2 [1] => 类型) [2] => 数组 ( [0] => el3 [1] => 开始日期 ) [3] => 数组 ( [0] => el4 [1] => 结束日期 )

标签: javascript php arrays variables foreach


【解决方案1】:
  1. 不要为每个变量发出单独的&lt;script&gt; 标记,而是在循环之前/之后只发出一次&lt;script&gt; 标记

  2. 现在 - 赋值的右侧被解释为另一个变量名,而不是一个值 - 这就是你得到未定义的原因。您缺少字符串变量值的引号

固定代码:

$language_array = [
         [ 'el1',  '"Grouping"'],
         [ 'el2', '"Type"' ],
         [ 'el3', '"Starting Date"'],
         [ 'el4', '"Ending Date"'],
         [ 'el5', '"Section"']
        ]; 

        echo "<script>";
        foreach ($language_array as $value) {
          echo "var ".$value[0]." = ". $value[1].";";
          echo "document.write({$value[0]}+'<br>');";
        }
        echo "</script>";

【讨论】:

  • 我只使用您提供的代码创建了一个本地 php 文件,它正在工作。当我在我的项目中使用时,没有任何迹象表明我不明白原因。
  • 我认为我的数组格式不同,我刚刚用你的例子替换了我的结果数组,这样它就可以工作了。
【解决方案2】:

您正在编写如下脚本:

<script> var el1 = Grouping; </script>

这将尝试使用Grouping 作为变量,但您希望它是文字字符串。

您应该使用json_encode()$value[1] 转换为JavaScript 文字。如果是 PHP 字符串,它将添加必要的引号。

foreach ($language_array as $value) {
    echo "<script> var ".$value[0]." = ". json_encode($value[1]) ."; </script>";
}

正如另一个答案所说,没有必要将每个变量放在自己的脚本中,尽管我认为它实际上不会对它的处理方式产生太大影响。

【讨论】:

    【解决方案3】:

    你能用 Alert(variable) 代替 documenti.write...因为 当我们将 document.write() 放在一个函数中时。调用该函数时,所有 HTML 元素都将被覆盖并替换为新的指定文本...

    【讨论】:

      猜你喜欢
      • 2013-04-20
      • 1970-01-01
      • 1970-01-01
      • 2021-09-25
      • 1970-01-01
      • 2011-05-29
      • 1970-01-01
      • 2022-01-22
      相关资源
      最近更新 更多