取消设置多个php变量

取消设置多个php变量,php,variables,variable-variables,Php,Variables,Variable Variables,我在MySQL查询的while循环中创建了一整套变量: $query = "SELECT * FROM fruit_table"; $result = mysql_query($result); //for sake of argument, well say this creates 3 rows to loop through. while ($row = mysql_fetch_array($result)){ $var = $row[1]; $$var = $row[2]; }

我在MySQL查询的while循环中创建了一整套变量:

$query = "SELECT * FROM fruit_table";
$result = mysql_query($result);

//for sake of argument, well say this creates 3 rows to loop through.
while ($row = mysql_fetch_array($result)){
 $var = $row[1];
 $$var = $row[2];
}
现在我们假设这已经创建了:$orange='orange',$apple='red',$banana='yellow'。这个函数将循环多次,但我需要在再次运行之前将所有变量设置为unset/null。根据运行的查询,每次变量名可能不同

这似乎不起作用:

unset($var);
unset($$var);

我如何循环使用多个变量名并取消所有变量名的设置?有什么想法吗?谢谢

您必须将创建的变量名保存到数组中,然后取消设置所有变量名:

$created_vars = array();
while ($row = mysql_fetch_array($result)){
    $var = $row[1];
    $created_vars[] = $var;
    $$var = $row[2];
}

foreach( $created_vars as $var) {
    unset( $$var);
}

所说的,你应该考虑放弃变量,只使用一个数组。

重构变量是现实的吗?只要调用
\u fetch\u assoc
而不是
\u fetch\u array
就可以得到一个很好的关联数组。变量是一种代码味道。另外…我认为如果你使用阵列,你会少一些麻烦。在PHP中没有任何理由,除了%0.1的情况下,变量确实是必需的。只需使用阵列即可节省大量调试时间;)小心!PHP的未来版本正在弃用并删除
mysql\uuz
函数系列。现在将是一个很好的时间,或。