我有一个遗留的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;
}
我在网上搜索得很高,没有运气。我发现的例子是要么做一些完全不同的事情,要么是使用一个小数组,这让我怀疑这是否可能。无论哪种方式,我都没有想法。感谢您提供的任何帮助。
答案 0 :(得分:7)
您可以使用json_encode()
将PHP数组转换为Javascript语法。
<script>
var js_array = <?php echo json_encode($php_array); ?>
</script>
然后,您可以在其余的客户端代码中使用js_array
变量。
但是最好使用AJAX根据需要查找数据库中的数据,而不是将整个数组转储到脚本中。