php - 访问 PHP 数组 - $_GET 定义的名称

标签 php arrays

<分区>

我目前无法访问一个数组,其中数组的名称由 $_GET 定义。

如果我有以下数组:

$test = array('Hello', 'Apples', 'Green');
$AnotherArray = array('Blue', 'Sun');

然后我想显示数组 $test,当我像这样打开我的脚本时:

ajax.php?arrayName=test

提前感谢您的帮助。

最佳答案

可以variable variables完成这个:

$the_array = ${$_GET['arrayName']};

重要

这就像使用炸药一样,因为恶意用户可以轻松地将变量名与其他名称交换并破坏您的应用。

最佳做法是首先将变量名列入白名单:

$safe_vars = array('test', 'AnotherArray');
if (in_array($_GET['arrayName'], $safe_vars, true)) {
    $the_array = ${$_GET['arrayName']};
}

备选

作为mentioned通过 Pekka 웃 ,您还可以考虑将可访问数组放在一个母数组中:

$arrays = array(
    'test' => array('Hello', 'Apples', 'Green'),
    'AnotherArray' = array('Blue', 'Sun')
);

if (isset($arrays[$_GET['arrayName']])) {
    $the_array = $arrays[$_GET['arrayName']];
}

这里的好处是没有使用魔法,只是简单的数组解引用。

关于php - 访问 PHP 数组 - $_GET 定义的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16401084/

相关文章:

python - 在 python numpy 数组中指定每个对象的数据类型

php - PHP 代码中的 JavaScript

php - 在不同语言的文件中搜索字符串 - PHP - UTF-8

php - 玛根托 : How to Get product from cart and add it again

javascript Push inside init 方法未正确更新数组长度

php - 简化从mysql数据库取数据的代码

c - 数组在 C 程序中被随机覆盖。可能是简单的解决方案

PHP 性能

php - 是什么让这两个阵列相加不同?

Java 到 Arduino 的通信不同步 - 跳跃运动