php:如何使用变量变量通过索引获取数组中的元素

php: How to get element in array by index using variable-variables

提问人:Hào Nghiêm Xuân 提问时间:8/23/2016 最后编辑:Hào Nghiêm Xuân 更新时间:8/23/2016 访问量:1262

问:

如果我有:

<?php
$params=[
    [
        'string'
    ]
];
//params get from $this->params()->fromPost();
$abc='params[0][0]';//$abc dynamiccly

我无法访问$params[0]

如何获取元素?string

我试着用

echo $$abc;

注意:未定义的变量 params[0][]

php 变量

评论

0赞 Sunil Pachlangia 8/23/2016
您的$params不是数组。使用数组语法来使用 $params[0] 属性
1赞 roberto06 8/23/2016
@SunilPachlangia这个语法是正确的,因为 PHP 5.4。
0赞 Sunil Pachlangia 8/23/2016
去掉单引号,在 $abc='params[0]';
0赞 Hào Nghiêm Xuân 8/23/2016
我刚才被编辑了问题。但$abc是动态的。所以我不能用这种方式。无论如何,谢谢@SunilPachlangia。
0赞 Jakub Matczak 8/23/2016
基本上,你不能在尝试时直接这样做。您有两种选择。首先是解析字符串以分别获取变量名称和索引值(例如,正如 roberto06 在他的答案中所示),但仅为了获取变量的值而做这么多工作是没有效率的。我建议(如果可能的话)更改您的数据流设计,在这种情况下是来自 POST 的传入值。$abc

答:

2赞 AmmyTech 8/23/2016 #1

使用以下方式访问字符串

$params=[
    'string'
];
$abc='params';

$new = $$abc;
echo $new[0];
2赞 roberto06 8/23/2016 #2

如果是动态定义的,则必须将其拆分为两个变量:和 ,因此:$abc$arrayName$arrayKey

$params = array('string');
$abc = 'params[0]';
$arrayName = substr($abc,0,strpos($abc,'['));
$arrayIndex = preg_replace('/[^\d\s]/', '',$abc);
echo ${$arrayName}[$arrayIndex]; // returns "string"

评论

0赞 Afshan Shujat 8/23/2016
你已经动态定义了变量,你可以使用循环访问该值 -
0赞 Afshan Shujat 8/23/2016 #3

为了访问动态变量的值,您可以执行一个循环-

<?php
$params=[
    'string'
];
$abc= 'params';

foreach($$abc as $k=>$v){
    echo $v;
}

?>

如果你想直接通过索引访问它,那么你需要在另一个变量中重新分配动态变量,比如,然后访问$newArr。$newArr = $$abc