我目前坚持访问一个数组,其中数组的名称由 $_GET 定义。
如果我有以下数组:
$test = array('Hello', 'Apples', 'Green');
$AnotherArray = array('Blue', 'Sun');
然后我想显示数组 $test,当我像这样打开我的脚本时:
ajax.php?arrayName=test
我在这里先向您的帮助表示感谢。
请不要对这个简单的任务使用可变变量:
一般只使用“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',然后使用指定的数组。
同样,可变变量是一种复杂程度和麻烦,您可能会为这种简单的情况感到遗憾!
您可以使用 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";
}
尝试这个
$test = array('Hello', 'Apples', 'Green');
$AnotherArray = array('Blue', 'Sun');
if( $_GET['arrayName'] == 'test')
{
print_r($test);
}
else if( $_GET['arrayName'] == 'AnotherArray')
{
print_r($AnotherArray);
}
使用变量变量名:
$allowedArrayNames = array( 'test', 'AnotherArray' );
if( in_array( $_GET['arrayName'], $allowedArrayNames ) && isset( $$_GET['arrayName'] ) )
{
print_r( $$_GET['arrayName'] );
}
为什么不直接提取?这样你就不允许访问其他变量并且只在变量已知时执行代码?
extract($_GET);
print_r($$arrayName);
甚至可以添加前缀来帮助保持清洁。
extract($_GET,EXTR_PREFIX_ALL,"get_");
print_r($$get_arrayName);
您可以使用可变变量,如下所示:
$arrayNameGiven = $_GET['arrayName']; // e.g. "test"
echo $$arrayNameGiven[1]; // "Apples"
在这里阅读更多:http ://www.php.net/manual/en/language.variables.variable.php
您是否尝试过以下方法:
$$_GET["arrayName"]