说这是我的字符串如何使用字符串从多维数组中获取值?
$string = 'product[0][1][0]';
我怎么能使用该字符串单独真正得到从数组值,好像我用了这一点:
echo $array['product'][0][1][0]
我已经与preg_match_all好惹的与此正则表达式(/\[([0-9]+)\]/
),但我无法想出令人满意的东西。
任何想法?提前致谢。
说这是我的字符串如何使用字符串从多维数组中获取值?
$string = 'product[0][1][0]';
我怎么能使用该字符串单独真正得到从数组值,好像我用了这一点:
echo $array['product'][0][1][0]
我已经与preg_match_all好惹的与此正则表达式(/\[([0-9]+)\]/
),但我无法想出令人满意的东西。
任何想法?提前致谢。
您可以使用preg_split
来获取单个数组索引,然后循环逐个应用这些索引。这里有一个例子,它使用粗糙的/[][]+/
正则表达式将字符串分开,无论它找到一个或多个方括号。
(阅读[][]
结构为[\]\[]
,即匹配左右括号字符类。反斜线是可选的。)
function getvalue($array, $string)
{
$indices = preg_split('/[][]+/', $string, -1, PREG_SPLIT_NO_EMPTY);
foreach ($indices as $index)
$array = $array[$index];
return $array;
}
这是prettttty哈克,但这会工作。不知道你的数组结构会发生怎样的变化,如果变得太动态,这将不起作用。
$array = array();
$array['product'][0][1][0] = "lol";
$string = 'product[0][1][0]';
$firstBrace = strpos($string, "[");
$arrayExp = substr($string, $firstBrace);
$key = substr($string, 0, $firstBrace);
echo $arrayExp, "<br>";
echo $key, "<br>";
$exec = "\$val = \$array['".$key."']".$arrayExp.";";
eval($exec);
echo $val;
怎么样使用eval()?
<?php
$product[0][1][0] = "test";
eval ("\$string = \$product[0][1][0];");
echo $string . "\n";
die();
?>