将大型PHP数组传递给Javascript

时间:2017-04-18 20:54:55

标签: javascript php arrays

我有一个遗留的PHP应用程序,它使用Javascript的dabbles来处理通常与用户界面相关的特定事情。我遇到了一个我无法找到解决方案的问题,我希望这里有人有想法或建议。

该应用程序为我提供了一个看起来像这样的PHP数组。从数据库中读取数据。我改变阵列结构的能力有限。数组可以变得非常大。

    array (size=19)
      3029 => 
        array (size=10)
          0 => string '3029' (length=4)
          'id' => string '3029' (length=4)
          1 => string 'Week 1' (length=6)
          'name' => string 'Week 1' (length=6)
          2 => string '3029' (length=4)
          'parent' => string '3029' (length=4)
          3 => string '16777216' (length=8)
          'order' => string '16777216' (length=8)
          'level' => int 0
          'code' => 
            array (size=4)
              0 => string '1' (length=1)
              1 => string '0' (length=1)
              2 => string '0' (length=1)
              3 => string '0' (length=1)
      3030 => 
        array (size=10)
          0 => string '3030' (length=4)
          'id' => string '3030' (length=4)
          1 => string 'W1T1' (length=4)
          'name' => string 'W1T1' (length=4)
          2 => string '3029' (length=4)
          'parent' => string '3029' (length=4)
          3 => string '16842752' (length=8)
          'order' => string '16842752' (length=8)
          'level' => int 1
          'code' => 
            array (size=4)
              0 => string '1' (length=1)
              1 => string '1' (length=1)
              2 => string '0' (length=1)
              3 => string '0' (length=1)
And so forth...

Javascript函数由onChange事件触发,如下所示。 (如果重要的话,所有JS都在PHP的单独文件中。)JS代码需要能够读取PHP数组,进行一些计算,然后更新表单上的其他字段。事实证明,由于客户端/服务器端处理这两种语言,这比我预期的要困难得多。我已经考虑过将数组作为参数传递给JS函数,但这并不是一个好主意,因为数组可能很大。指针会很好,但我不知道这是否可能。我还有点担心JS如何处理嵌套数组。我没有很多JS经验。它是否使用像PHP这样的键,还是只使用索引?

    <select name="parent" class="text" onchange="getNextCode(document.detailFrm, <?php if ($obj->parent) {echo $obj->parent;} else {echo 0;}?>)">
        <option value='<?php echo $obj->id; ?>'><?php echo $AppUI->_('None'); ?></option>
        <?php echo $task_parent_options; ?>
    </select>

我还没有写过JS,所以现在看起来就像这样。正如我所说,这应该读取数组并更新显示。

function getNextCode(form, parent) {
  //Read the array
  //Calculate next code values
  form.code0.value = code0;
  form.code1.value = code1;
  form.code2.value = code2;
  form.code3.value = code3;
}

我在网上搜索得很高,没有运气。我发现的例子是要么做一些完全不同的事情,要么是使用一个小数组,这让我怀疑这是否可能。无论哪种方式,我都没有想法。感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:7)

您可以使用json_encode()将PHP数组转换为Javascript语法。

<script>
var js_array = <?php echo json_encode($php_array); ?>
</script>

然后,您可以在其余的客户端代码中使用js_array变量。

但是最好使用AJAX根据需要查找数据库中的数据,而不是将整个数组转储到脚本中。