我有这个代码在javascript中执行for循环,里面有一个php数组。无论如何我可以使用变量作为php变量内部的循环。这都在php里面。
echo '<script>
for (var i =0; i<4;i++){
alert("hey"'.$phparr[i].');
}</script>';
我知道这不会起作用,因为$ phparr是一个php变量,而i是一个javascript变量,无论如何我可以这样做吗?
答案 0 :(得分:0)
尝试:
<script>
var phparr = <?php echo json_encode($phparr); ?>;
for (i in phparr){
alert("hey" + phparr[i]);
}
</script>
PHP是server side language,这意味着它在到达客户端(浏览器)之前执行。
JavaScript是client side language,这意味着它在浏览器(客户端)中执行。
新网络开发者的最佳工具是Google搜索。 Learn how to search effectively.
答案 1 :(得分:0)
你几乎就在那里。为了在javascript中访问php数组,你首先必须将php数组回显成javascript数组。尝试:
$phparr_imploded = implode(',',$phparr);
echo '
<script>
var arr = ['.$phparr_imploded.'];
for (var i =0; i<4;i++){
alert("hey"+arr[i]);
}
</script>
';
如果你的php数组来自数据库,或者包含javascript可能误解的特殊字符,请确保在输出之前进行清理。
你的php数组中的对象是字符串吗?如果是这样,您需要在内爆前使用转义引号包围对象。
for($i=0; i<count($phparr); $i++){
$phparr[i] = '"'.$phparr[i].'"';
};
答案 2 :(得分:-1)
如何将PHP数组存储在Javascript变量中并按照kpotehin的建议进行循环?
<script>
var i = 0, name;
var myArr = <?php echo json_encode($my_array); ?>;
while (name = myArr[i++]){
alert("hey " + name);
}
</script>
答案 3 :(得分:-1)
你应该这样做:
var arr = ["<?php echo implode('","',$array); ?>"];
for (var i =0; i<4;i++){
alert("hey"+ arr[i]);
}
答案 4 :(得分:-1)
您的基本问题是您忘记了PHP代码和JavaScript代码不会同时执行。 PHP运行完成,输出HTML和JavaScript。然后浏览器运行JavaScript。如果JavaScript需要动态访问PHP变量(包括数组)中的数据,那么PHP需要生成JavaScript,以JavaScript结构声明数据。这就是所有其他答案正在做的事情。