php变量异常行为

时间:2012-08-17 08:37:19

标签: php javascript codeigniter

我正在尝试同时增加java脚本变量和php变量的值,所以在我的java脚本中我这样做:

<script>
<?php $i=1;?>
for(var i=1;i<=5;i++){
var abc = $('<input>').attr('name','demo'+i).attr('value','<?php echo set_value('demo'.$i++));
 <?php echo $i; ?>
 }
</script>

但是,每当$ i echo`ed的值为2时,逻辑上它应该增加java脚本循环迭代的次数并且回显5但不是,我做错了什么?

3 个答案:

答案 0 :(得分:5)

PHP代码不会与Javascript代码同时运行。

在客户端收到页面之前,PHP代码在服务器上运行。在客户端收到页面后,Javascript代码在客户端上运行。

您需要在PHP代码中编写一个循环,为您的Javascript代码提供完整的数据。

执行此操作的一种常用方法是将其放入数组并将其编码为JSON服务器端,然后将JSON提供给您的Javascript以进行进一步处理。注意,如果你只是将它分配给一个变量,那么Javascript方面不需要额外解析数据 - JSON是有效的Javascript。

进一步阅读

答案 1 :(得分:0)

此代码中没有循环! (如果你问PHP解释器。)

它只是一个PHP脚本,它输出几行文本(碰巧是Javascript代码,恰好包含一个Javascript循环)。

答案 2 :(得分:0)

您可以尝试理解此代码:

<script>
    <?php
    echo "var data = [";
    for ($i = 1; $i <= 5; $i++) {
        echo "'".set_value('demo'.$i)."'";
    }
    echo "];";
    ?>

    for (var i = 1; i <= 5; i++) {
        var abc = $('<input>').attr('name', 'demo' + i).attr('value', data[i]);
    }
</script>

实际发生的是,一旦你运行这个php文件,php块就会产生类似的输出:

var data = ['demo1 value', 'demo2 value', 'demo3 value','demo4 value','demo5 value',];

这是一个javascript数组,你可以在php块下面的javascript代码中使用。