【问题标题】:How to access PHP array element using JavaScript variable as key?如何使用 JavaScript 变量作为键访问 PHP 数组元素?
【发布时间】:2017-04-17 11:21:48
【问题描述】:

所以我正在尝试制作一个简单的学术系统。 我制作了显示课程信息的动态框。 核心代码是这样的

function addcourses(){  //(numcourses)
    var num_courses= <?php echo $_GET['num']?>; //=numcourses
    var newdiv;
    var divIdName;
    var i=0;
    for(i=1;i<=num_courses;i++){
        var divtoadd = document.getElementById('courselist');
        newarticle = document.createElement('article');
        divIdName = 'course'+i;
        newarticle.setAttribute('id',divIdName);
        newarticle.innerHTML ='<div class="box"><h2><?php echo $course_num_arr[i]?></h2><div class="content"><p>Credit Hours: <?php echo $credit_arr[0]?> </p><p>Professor: <?php echo $prof_arr[0]?></p><p>Average GPA: <?php echo $avg_arr[0]?></p><p>GPA: <?php echo $gpa_arr[0]?></p></div></div>';
        call_course();        
        divtoadd.appendChild(newarticle);
    }
}

问题在于&lt;?php echo $course_num_arr[i]?&gt;,因为i 是来自javascript 的变量,我不知道如何处理。

我想在i = 1$course_num_arr[2]i = 2 时回显$course_num_arr[1] 等等。

【问题讨论】:

  • PHP 在页面发送到浏览器之前在服务器上运行,而 javascript 在页面离开服务器之后在浏览器中运行。没有办法直接从 javascript 到 PHP 获取值。您必须通过新请求(页面重新加载、重定向或 ajax 调用等)将 javascript 值发送回服务器。
  • 只有在将 javascript 代码放在 php 文件中或它不起作用时才能这样做。改为进行 Ajax 调用。
  • 对,我也这么认为。所以只有可用的选项是ajax。我只是想在工作之前确认一下。由于包含 ajax 似乎很愚蠢。
  • @Ravistm 假设 javascript 代码放在了一个 php 文件中,那我该怎么办?

标签: javascript php arrays loops


【解决方案1】:

如果你不想使用ajax 调用并且想将代码放在PHP 文件中,你可以使用json_encode() 函数。请参考以下代码。

<?php
$cources = array( "0" => array ("name" => "maths","credits" => 30),"1"
=> array ("name" => "physics","credits" => 30));
?>
<script>
data=<?php echo json_encode($cources); ?>;
for(i=0;i<data.length;i++){
    alert(data[i].name)
    var h = document.createElement("H1");
    var t = document.createTextNode(data[i].name);
    h.appendChild(t);
    document.body.appendChild(h);
}
</script>

【讨论】:

  • 感谢您的回答。然而,结果应该进入innerHTML,这让我遇到了麻烦。所以你可以看到上面的代码,数据的结果应该在这里

    HERE!

猜你喜欢
  • 2023-04-10
  • 2018-02-27
  • 2015-08-14
  • 2021-06-24
  • 1970-01-01
  • 1970-01-01
  • 2017-05-25
  • 2015-09-05
  • 2019-01-07
相关资源
最近更新 更多