这是代码:
<?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);' ;
但是为什么如何让它传递外部变量?
答案 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>
希望你能清楚地理解它。快乐的编码!!!