如何将变量传递给我的代码

时间:2015-04-03 07:14:01

标签: php arrays

这是代码:

<?php
$url_edit = '$i';
$url_delete = '$j';
$form['table'] = '$eval_var'.'='.'array($url_edit,$url_delete);' ;
?>
<table>
  <?php
for($i=0;$i<=10;$i++){
?>
<tr>
<?php
    for($j=0;$j<=10;$j++){
      eval($form['table']);
      echo '<td>'.$eval_var[0].'</td>'.'<td>'.$eval_var[1].'</td>';
    }
    ?>
</tr>
<?php
}
?>
</table>

期待结果:

0 0 0 1 0 2 0 3 0 4 0 5 0 6 0 7 0 8 0 9 0 10 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 2 10 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 3 10 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 4 10 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 5 10 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 6 10 7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 7 10 8 0 8 1 8 2 8 3 8 4 8 5 8 6 8 7 8 8 8 9 8 10 9 0 9 1 9 2 9 3 9 4 9 5 9 6 9 7 9 8 9 9 9 10 10 0 10 1 10 2 10 3 10 4 10 5 10 6 10 7 10 8 10 9 10 10

但它显示:

$ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j $ i $ j

代码中的问题在哪里?为什么?

注意:如果我把它放在:

$form['table'] = '$eval_var'.'='.'array($i,$j);' ;

但是为什么如何让它传递外部变量?

2 个答案:

答案 0 :(得分:4)

我不知道这是什么目的,但您需要先使用双引号插入$url_edit$url_delete,然后转义$eval_var

$url_edit = '$i'; // string literals to be interpolated
$url_delete = '$j'; // this one as well
$form['table'] = "\$eval_var = array($url_edit,$url_delete);";
                // ^ escape this      ^         ^ let this be interpolated

答案 1 :(得分:2)

为了你的正确理解:

要在eval中使用字符串代码,请始终尝试

a)将你的变量放在(&#34; code&#34;)中作为字符串

b)在它之前逃避$置入\。

因此,100%正确的代码将是:

$url_edit = "\$i";
$url_delete = "\$j";
$form['table'] = "\$eval_var".'='."array($url_edit,$url_delete);" ;

看第3行。它是什么意思?

$form['table'] = "\$eval_var".'='."array(\$i,\$j);" ;

满足条件(a)和(b)。

完全正确的代码将是:

<?php
$url_edit = "\$i";
$url_delete = "\$j";
$form['table'] = "\$eval_var".'='."array($url_edit,$url_delete);" ;
?>
<table>
  <?php
for($i=0;$i<=10;$i++){
?>
<tr>
<?php
    for($j=0;$j<=10;$j++){
      eval($form['table']);
      echo '<td>'.$eval_var[0].'</td>'.'<td>'.$eval_var[1].'</td>';
    }
    ?>
</tr>
<?php
}
?>
</table>

希望你能清楚地理解它。快乐的编码!!!