2

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

如果我有以下数组:

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

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

ajax.php?arrayName=test

我在这里先向您的帮助表示感谢。

4

8 回答 8

6
于 2013-05-06T14:41:30.387 回答
5

请不要对这个简单的任务使用可变变量:

一般只使用“arrayName”或类似参数作为建议,不要直接使用用户输入,以保证安全。

在这种情况下,我实际上只是建议使用整数:

url?showdata=1 //Shows the $test array

url?showdata=2 // Shows the $AnotherArray

ETC

url?showdata=3 // Shows another array of your choice

或者,如果您必须使事情复杂化,只需检查 ?arrayName=something 是否完全等于 'test' 或完全等于 'AnotherArray',然后使用指定的数组。

同样,可变变量是一种复杂程度和麻烦,您可能会为这种简单的情况感到遗憾!

于 2013-05-06T14:41:39.657 回答
3

您可以使用 variable 变量,但将其仅限于“安全”变量名非常重要。

在这个例子中,我展示了 2 种方法,使之成为使用变量变量的安全方法。

<?

$_GET['arrayName'] = 'test';

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

// safety check. only allow defined arrays from this list. Check with array of allowed names.
$possibleArrays = array('test', 'AnotherArray');

if(array_search($_GET['arrayName'], $possibleArrays) !== false)
{
    var_dump($$_GET['arrayName']);
}
else
{
    echo "warning, accessing undefined array";
}

// safety check, only allow my defined arrays. Check with switch statement.
switch($_GET['arrayName'])
{
    case 'test':
    case 'AnotherArray':
        var_dump($$_GET['arrayName']);
        break;
    default:
        echo "warning, accessing undefined array";
}
于 2013-05-06T14:48:09.903 回答
3

尝试这个

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

if( $_GET['arrayName'] == 'test')
{
   print_r($test);
}
else if( $_GET['arrayName'] == 'AnotherArray')
{
   print_r($AnotherArray);
}
于 2013-05-06T14:42:36.807 回答
1

使用变量变量名

$allowedArrayNames = array( 'test', 'AnotherArray' );

if( in_array( $_GET['arrayName'], $allowedArrayNames ) && isset( $$_GET['arrayName'] ) )
{
    print_r( $$_GET['arrayName'] );
}
于 2013-05-06T14:40:34.860 回答
1

为什么不直接提取?这样你就不允许访问其他变量并且只在变量已知时执行代码?

extract($_GET);
print_r($$arrayName);

甚至可以添加前缀来帮助保持清洁。

extract($_GET,EXTR_PREFIX_ALL,"get_");
print_r($$get_arrayName);
于 2013-05-06T14:51:55.880 回答
-1

您可以使用可变变量,如下所示:

$arrayNameGiven = $_GET['arrayName'];    // e.g. "test"
echo $$arrayNameGiven[1];    // "Apples"

在这里阅读更多:http ://www.php.net/manual/en/language.variables.variable.php

于 2013-05-06T14:45:12.993 回答
-1

您是否尝试过以下方法:

$$_GET["arrayName"]
于 2013-05-06T14:40:17.887 回答