php数组值中的javascript变量声明

时间:2018-10-19 18:51:16

标签: javascript php arrays variables foreach

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

我尝试过的是这个

  foreach ($language_array as $value) {


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

}

但是当我尝试document.write(variable);是未定义的。

 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
        )

)

谢谢

Ervin

3 个答案:

答案 0 :(得分:0)

您是否可以使用Alert(variable)代替documenti.write ...,因为 当我们将document.write()放入函数中时。调用该函数时,所有HTML元素都将被覆盖,并替换为新的指定文本...

答案 1 :(得分:0)

  1. 不要为每个变量单独发出<script>标签,而应-在循环之前/之后仅发出<script>标签

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

答案 2 :(得分:0)

您正在编写如下脚本:

<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>";
}

就像另一个答案所说的那样,虽然我认为它实际上不会在处理方式上有很大的不同,但是没有必要将每个变量放在自己的脚本中。