将变量变量设置为数组键

set variable variable as array key

提问人:d-_-b 提问时间:6/10/2014 最后编辑:d-_-b 更新时间:6/10/2014 访问量:20767

问:

我不确定如何问这个问题,但这里是:

$id = 1;
$age = 2;    
$sort = "id"; // or "age";

$arr = array($$sort => 'string'); // so that it becomes 1 => 'string' 
             ^ what goes here?    //      instead of 'id' => string'

这是角色用来“变量变量”的东西吗?&

或者也许?eval

php 变量

评论

0赞 Joseph 6/10/2014
也许你需要一种不同的方法。你能再解释一下你最终想要实现的目标吗?

答:

1赞 jeroen 6/10/2014 #1

我不会为此使用变量变量,而是使用一个数组,将正确的键连接到您需要的值:

$sorts = array('id' => 1, 'age' => 2);
$sort = 'id';

$arr = array($sorts[$sort] => 'string');

举个例子

5赞 Daryl Gill 6/10/2014 #2

关于你的问题的主题。使用 PHP 的逻辑,我可以看到这样做的最好方法是在数组定义之外分配变量:

$id = 1;
$age = 2;    
$sort = "id"; // or "age";
    $Key = $$sort;
$arr = array($Key => 'string');

print_r($arr);

其中输出:

数组 ( [1] => 字符串 )

虽然,就个人而言。我建议避免这种方法。最好显式定义密钥,以帮助回溯/调试代码。你要做的最后一件事,就是在变量变量的迷宫中寻找。特别是,如果它们是动态创建的


修补。我有这个;

$arr[$$sort] = "Value";

print_r($arr);

我已经研究了创建函数的方法。我看不出有可行的方法可以成功地做到这一点。根据我提供的信息(定义数组定义之外),希望这将引导您朝着正确的方向前进

2赞 srain 6/10/2014 #3

如果您使用:

$arr = array($sort => 'string');

将是 ,但如果您使用id => string

$arr = array($$sort => 'string');

$sortwill be 和 will be ,它的值是 ,所以:id$$sort$id11 => string