eval()不是迭代,而是字符串

时间:2015-08-21 14:11:42

标签: php arrays string while-loop eval

我使用while循环遍历数组并使用数组的输出设置动态变量。这工作正常,但我想在每个循环上生成的字符串中回显值。字符串是从服务器中提取的。我知道我需要评估该字符串,所以我使用的是eval(),而不是在每个循环上都有一个新值,eval似乎保持第一个值。

当我将输出字符串作为回显内联提供时,它会使用数组中的动态数据生成多行。

以下是我的代码。 $ value是从服务器端数据库中提取的字符串。它是“礼物描述: $ giftDesc 赋予: $ giftGiven”,不含引号。

while ($i < 3){
    $keys = $keywords[$i];
    $array = $_POST[$keys];
    $$keywords[$i] = $array[$ii];
    $i++;
}
eval("\$value = \"$value\";"); 
echo $value;

返回:

Description of Gift: Gift1 
Given to: Given 1

Description of Gift: Gift1
Given to: Given 1

但是,如果我执行以下代码:

while ($i < 3){
    $keys = $keywords[$i];
    $array = $_POST[$keys];
    $$keywords[$i] = $array[$ii];
    $i++;
}
print "<strong>Description of Gift: </strong>$giftDesc<strong>Given to: </strong>$giftGiven";

返回:

Description of Gift: Gift1 
Given to: Given 1

Description of Gift: Gift2
Given to: Given 2

所以,问题是为什么eval()不会在每个循环中发生变化?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您的eval不在循环中。它只运行一次。