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

php:如何使用变量通过索引获取数组中的元素,php,variable-variables,Php,Variable Variables,如果我有: <?php $params=[ [ 'string' ] ]; //params get from $this->params()->fromPost(); $abc='params[0][0]';//$abc dynamiccly 但是 注意:未定义的变量params[0][] 使用下面的方法访问字符串 $params=[ 'string' ]; $abc='params'; $new = $$abc; echo $ne

如果我有:

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

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


使用下面的方法访问字符串

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

$new = $$abc;
echo $new[0];

使用下面的方法访问字符串

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

$new = $$abc;
echo $new[0];

如果动态定义了
$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"

如果动态定义了
$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"

要访问dynamic Variable的值,可以执行循环-

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

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

?>


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

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

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

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

?>


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

您的$params不是数组。使用数组语法使用$params[0]property@SunilPachlangia这个语法是正确的,因为PHP5.4。删除单引号并添加$sign-in$abc='params[0]';我刚才被编辑了一个问题。但是$abc是动态的。所以我不能用这种方式。无论如何,谢谢@SunilPachlangia。基本上,你不能在尝试时直接这么做。你有两个选择。首先是解析
$abc
字符串以分别获得变量名和索引值(例如,正如roberto06在他的回答中所示),但仅仅为了获得变量的值而做这么多工作是没有效率的。我建议(如果可能的话)更改您的数据流设计,在本例中,它是来自POST的传入值。您的$params不是数组。使用数组语法使用$params[0]property@SunilPachlangia这个语法是正确的,因为PHP5.4。删除单引号并添加$sign-in$abc='params[0]';我刚才被编辑了一个问题。但是$abc是动态的。所以我不能用这种方式。无论如何,谢谢@SunilPachlangia。基本上,你不能在尝试时直接这么做。你有两个选择。首先是解析
$abc
字符串以分别获得变量名和索引值(例如,正如roberto06在他的回答中所示),但仅仅为了获得变量的值而做这么多工作是没有效率的。我建议(如果可能的话)更改您的数据流设计,在本例中是来自POST的传入值。您已经动态定义了变量,您可以使用loop访问值-您已经动态定义了变量,您可以使用loop访问值-