我有一些数组即:。
$arr = [
'a1' => [
'a2' => []
]
];
我还有一系列索引,如:
$index = ['a1', 'a2', 'a3'];
现在我想在$arr
中插入一些值,在索引"My var"
中说一个字符串$arr['a1']['a2']['a3']
如何有效地解决问题? 我有2个解决方案。最简单的是eval(),但我不想跳过这个。第二种解决方案是使用指针。我已经使用了类似的代码:
$arr = [
'a1' => [
'a2' => []
]
];
$index = ['a1', 'a2', 'a3'];
$value = 'My var';
$content_arr = &$arr;
foreach( $index as $v ){
if( ! isset( $content_arr[$v] ) ){
$content_arr[$v] = [];
}
$content_arr = &$content_arr[$v];
}
$content_arr = $value;
unset($content_arr); // to clear variable
var_dump($arr); // print my array
我担心的是多指针。在我的示例中,$ arr非常简单,但它会有更多数据,而可能会对性能产生负面影响。
你有更好的(?)解决方案吗?
我发现这有助于检查是否设置了索引数组:https://stackoverflow.com/a/11041473/1736186但是我无法看到这对设置变量有用。