2009-07-02 91 views
0

说这是我的字符串如何使用字符串从多维数组中获取值?

$string = 'product[0][1][0]'; 

我怎么能使用该字符串单独真正得到从数组值,好像我用了这一点:

echo $array['product'][0][1][0] 

我已经与preg_match_all好惹的与此正则表达式(/\[([0-9]+)\]/),但我无法想出令人满意的东西。

任何想法?提前致谢。

回答

4

您可以使用preg_split来获取单个数组索引,然后循环逐个应用这些索引。这里有一个例子,它使用粗糙的/[][]+/正则表达式将字符串分开,无论它找到一个或多个方括号。

(阅读[][]结构为[\]\[],即匹配左右括号字符类。反斜线是可选的。)

function getvalue($array, $string) 
{ 
    $indices = preg_split('/[][]+/', $string, -1, PREG_SPLIT_NO_EMPTY); 

    foreach ($indices as $index) 
     $array = $array[$index]; 

    return $array; 
} 
0

这是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; 
0

怎么样使用eval()

<?php 
    $product[0][1][0] = "test"; 
    eval ("\$string = \$product[0][1][0];"); 
    echo $string . "\n"; 
    die(); 
?> 
相关问题