我无法找到一种简单地解析字符串输入并在多维数组中找到正确位置的方法.
我希望有一两行可以做到这一点,因为我看到的解决方案依赖于长(10-20行)循环.
给出以下代码(注意,理论上,嵌套可以是任意深度):
function get($string)
{
$vars = array(
'one' => array(
'one-one' => "hello",
'one-two' => "goodbye"
),
'two' => array(
'two-one' => "foo",
'two-two' => "bar"
)
);
return $vars[$string]; //this syntax isn't required, just here to give an idea
}
get("two['two-two']"); //desired output: "bar". Actual output: null
Run Code Online (Sandbox Code Playgroud)
是否有一个简单的使用内置函数或其他简单的东西,可以重新创建我想要的输出?
就像这样
我有一个变量,其中包含一个数组索引,例如
$var = 'testVar["abc"][0]';
Run Code Online (Sandbox Code Playgroud)
要么
$var = 'testVar["xyz"][0]["abc"]';
Run Code Online (Sandbox Code Playgroud)
或者它可以是运行时的任何东西.
现在当我尝试使用这个PHP代码访问它时:
echo $$var;
Run Code Online (Sandbox Code Playgroud)
要么
echo ${$var};
Run Code Online (Sandbox Code Playgroud)
我得到一个警告说非法抵消线...
但如果我使用这个代码,它的工作原理
eval('echo $'.$var);
Run Code Online (Sandbox Code Playgroud)
我不想使用eval().还有其他方法吗?
编辑:
变量$ testVar是在运行时构建的数组,它可以动态构建多维数组.它的格式不固定,只有脚本通过使用某些变量知道数组可能是什么.
例如,在任何时候,数组可能有一个$["xyz"][0]["abc"]我想动态访问的索引.
我的php版本是5.1