2011-01-24 20 views
0

数组值如果我有一个数组,例如:字符串转换为PHP中

testarray = array('foo'=>34, 'bar'=>array(1, 2, 3)); 

我怎么会去一个字符串转换,如testarray[bar][0]发现其描述的价值?

+1

上EVAL http://php.net/manual外观/en/function.eval.php – 2011-01-24 13:15:13

+3

你想做什么?有可能有更好的方法来做到这一点 – 2011-01-24 13:15:14

回答

2

那么,你可以做这样的事情(不是最漂亮的,但远低于eval安全)...:

$string = "testarray[bar][0]"; 

$variableBlock = '[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*'; 
$regex = '/^('.$variableBlock.')((\[\w+\])*)$/'; 
if (preg_match($regex, $string, $match)) { 
    $variableName = $match[1]; // "testarray" 
    if (!isset($$variableName)) { 
     //Error, the variable does not exist 
     return null; 
    } else { 
     $array = $$variableName; 
     if (preg_match_all('/\[(\w+)\]/', $match[2], $matches)) { 
      foreach ($matches[1] as $match) { 
       if (!is_array($array)) { 
        $array = null; 
        break; 
       } 
       $array = isset($array[$match]) ? $array[$match] : null; 
      } 
     } 
     return $array; 
    } 
} else { 
    //error, not in correct format 
}