Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何动态设置变量php,设计模式_Php - Fatal编程技术网

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

如何动态设置变量php,设计模式,php,Php,我有几个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'"; ... 另一个脚本将是相同的脚本,除了car、truck或table autos之外,我将使用另一个表、不同的

我有几个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'";

...

另一个脚本将是相同的脚本,除了car、truck或table autos之外,我将使用另一个表、不同的变量以及可能更多或更少的变量。是否有一种方法或一种好的设计模式可以使用,这样我只需要编写这个脚本的一个实例,而不是编写15个左右的实例。

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

$string = 'varName';
$$string = 'Hello World'; // $$string is $varName
echo $varName; // returns 'Hello World'
你可以这样做

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


稍后还可以通过在
php.ini
中启用register\u globals来实现。但这是危险的

当与不太完美的代码结合使用时,这会带来安全隐患,但我认为这对您来说不是问题

extract($_GET, EXTR_SKIP);
echo $car;
使用的好处是可以指定发生名称冲突时的行为。您可能会考虑<代码> ExpRePixFieldAuth/<代码> FLAG。< /P> 或者,只是列一个白名单,这是最好的

$allowed = array('car', 'count');
$vars = array_intersect_key($_GET, array_flip($allowed));
extract($vars);
$allowed = array('car', 'count');
$vars = array_intersect_key($_GET, array_flip($allowed));
extract($vars);