将字符串爆炸成关联数组键

时间:2013-09-30 20:09:34

标签: php

我有一组格式为“A.B.C”的字符串,可以有不同的“深度”。 I.E.一个可能只是“A”或可能是“A.B.C.D”。

我希望能够将其转换为关联数组的键。所以“A”会转化为

$var["A"] = $val;

“A.B”会转换为

$var["A"]["B"] = $val;

2 个答案:

答案 0 :(得分:1)

使用递归函数并传递&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.

答案 1 :(得分:0)

解决方案可以是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 ) ) )