0
数组值如果我有一个数组,例如:字符串转换为PHP中
testarray = array('foo'=>34, 'bar'=>array(1, 2, 3));
我怎么会去一个字符串转换,如testarray[bar][0]
发现其描述的价值?
数组值如果我有一个数组,例如:字符串转换为PHP中
testarray = array('foo'=>34, 'bar'=>array(1, 2, 3));
我怎么会去一个字符串转换,如testarray[bar][0]
发现其描述的价值?
那么,你可以做这样的事情(不是最漂亮的,但远低于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
}
上EVAL http://php.net/manual外观/en/function.eval.php – 2011-01-24 13:15:13
你想做什么?有可能有更好的方法来做到这一点 – 2011-01-24 13:15:14