我有一个包含数组元素的字符串。
$str = '[some][string]';
$array = array();
如何使用
$array['some']['string']
获得$str
的值? 最佳答案
您可以使用eval进行操作,不知道您是否满意:
$array['some']['string'] = 'test';
$str = '[some][string]';
$code = sprintf('return $array%s;', str_replace(array('[',']'), array('[\'', '\']'), $str));
$value = eval($code);
echo $value; # test
但是eval并不总是正确的工具,因为它很好,它经常显示出在需要使用它时存在设计缺陷。
另一个示例,如果需要写访问数组项的权限,则可以执行以下操作:
$array['some']['string'] = 'test';
$str = '[some][string]';
$path = explode('][', substr($str, 1, -1));
$value = &$array;
foreach($path as $segment)
{
$value = &$value[$segment];
}
echo $value;
$value = 'changed';
print_r($array);
实际上,这与Eric's answer中的原理相同,但是引用了变量。
关于php - php字符串调用数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6981188/