如何在php中动态设置变量,设计模式

5

我有几个php脚本,它们具有以下结构:

$count = $_GET['count'];
$sort = $_GET['sort'];
$car = $_GET['car'];
$driver = $_GET['driver'];

...

$SQL = "SELECT car, truck FROM autos WHERE car='$car' AND truck='truck'";

...

另一个脚本将是相同的脚本,只不过我不再使用汽车、卡车或桌子这些变量,而是使用另一个表格,不同的变量,可能更多或更少的变量。是否有一种方法或良好的设计模式可用,使我只需编写此脚本的一个实例,而不是我本来需要编写的那15个左右。

3个回答

2
这在与不完美的代码结合时具有安全隐患,但我假设这对您来说不是问题。
extract($_GET, EXTR_SKIP);
echo $car;

使用 extract 的好处是您可以指定名称冲突时的行为。不过,建议使用 EXTR_PREFIX_ALL 标志。
或者,只需制作一个白名单,这是我认为最好的选择。
$allowed = array('car', 'count');
$vars = array_intersect_key($_GET, array_flip($allowed));
extract($vars);

1

您可以像这样动态设置变量:

$string = 'varName';
$$string = 'Hello World'; // $$string is $varName
echo $varName; // returns 'Hello World'

1

你可以做到这一点,

foreach(array('count','car','driver', 'sort') as $v){
    $$v = $_GET[$v]
}

或者,

foreach($_GET as $k => $v){
    $$k = $v
}

稍后也可以通过在php.ini中启用register_globals来实现。但这是危险的


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接