我有一组格式为“ABC”的字符串,可以有不同的“深度”。IE 可能只是“A”或可能是“ABCD”。
我希望能够将其转换为关联数组的键。所以“A”会翻译成
$var["A"] = $val;
而“AB”将转化为
$var["A"]["B"] = $val;
我有一组格式为“ABC”的字符串,可以有不同的“深度”。IE 可能只是“A”或可能是“ABCD”。
我希望能够将其转换为关联数组的键。所以“A”会翻译成
$var["A"] = $val;
而“AB”将转化为
$var["A"]["B"] = $val;
使用递归函数并通过&reference
$str = "A.B.C" ;
$letters = explode(".", $str);
$result = array() ;
function goDeep(&$array, $letters, $level){
if ($level >= count($letters)){
$array = "Your value here" ;
return ;
}
$array[$letters[$level]] = array() ;
goDeep($array[$letters[$level]], $letters, ++$level);
}
goDeep($result, $letters, 0);
var_dump($result); //3 - level deep array is ready.
解决办法可以eval()
。
<?php
$a = "A.B.C";
$temp = explode('.',$a);
$keys = "";
foreach ($temp as $value) {
$keys .= "['$value']";
}
$val = "XXX";
$var = array();
eval('$var'.$keys.' = $val;');
print_r($var);
?>
结果如下:
Array ( [A] => Array ( [B] => Array ( [C] => XXX ) ) )