将变量设置为数组键

5
我不确定如何提问,但是我会试着表达我的问题:

$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

也许你需要不同的方法。你能再解释一下你最终想要实现什么吗? - Joseph
3个回答

5

关于您的问题,就其主题而言。根据PHP的逻辑,我认为最好的方法是在数组定义之外分配您的变量变量:

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

print_r($arr);

这段代码输出:

Array ( [1] => string )

然而,个人建议避免使用这种方法。最好明确定义键名以帮助回溯/调试代码。最不希望的情况是在变量和变量之间迷失方向,特别是如果它们是即兴创建的。


调试时可以试试以下方法:

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

print_r($arr);

我已经研究了创建函数的方法,但我没有看到一个可行的方法来成功地实现这个。希望我提供的信息(数组定义之外的定义)能够引导你朝着正确的方向前进。


2

如果您使用:

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

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

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

$sort将会是id$$sort将会是$id,并且它的值是1,所以:1 => string


1
我不会使用变量变量来实现,而是使用一个数组将正确的键连接到所需的值:
$sorts = array('id' => 1, 'age' => 2);
$sort = 'id';

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

一个例子


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接