有一个数组array('a','b','c','d','e','f'),请编程达成下图的效果。
Array

    [a]=>Array
          (
             [b]=>Array
                 (
                     [c]=>Array
                         (
                             [d]=>Array
                                   (
                                      [e]=>f
                                     )
                           )
                   )
             )
 )这对于我一个初学php的来说,好难呀!!所以请高人点点呀!

解决方案 »

  1.   

    //原始数组的长度必须>=2
    $ar = array('a','b','c','d','e','f');$arResult = array();
    $arResult[$ar[count($ar) - 2]] = $ar[count($ar) - 1];
    array_pop($ar);
    array_pop($ar);echo "<pre>";
    while($k = array_pop($ar)) {
       $arTMP = $arResult;
       $arResult = array();
       $arResult[$k] = $arTMP;
    }
    print_r($arResult);
      

  2.   

    使用递归算法。。
    $arr=array('a','b','c','d','e','f');
    $result=null;
    $counter=0;
    function addarr($arr,$counter,&$result){
    $counter++;
    //如果是最后一个元素,就把这个元素赋值进去,否则就一直传递这个指针
    if($counter==sizeof($arr)){
    $result=$arr[$counter-1];
    }else{
    addarr($arr,$counter,$result[$arr[$counter-1]]);
    }
    }addarr($arr,$counter,$result);
    print_r($result);
    结果是:
    Array ( [a] => Array ( [b] => Array ( [c] => Array ( [d] => Array ( [e] => f ) ) ) ) ) 
      

  3.   

    $ar = array('a','b','c','d','e','f');function foo($ar) {
      $k = array_shift($ar);
      if(! $ar) return $k;
      $r[$k] = foo($ar);
      return $r;
    }
    print_r(foo($ar));Array
    (
        [a] => Array
            (
                [b] => Array
                    (
                        [c] => Array
                            (
                                [d] => Array
                                    (
                                        [e] => f
                                    )                        )                )        ))
      

  4.   


    $a = array('a','b','c','d','e','f');
    $len = count($a);
    for($i = $len-1 ; $i >=0 ; $i--){
    if($i < $len-1)
    $result = array($a[$i] => $result);
    else
    $result = $a[$i];
    }
    print_r($result);
      

  5.   

    这样更简单
    $a = array('a','b','c','d','e','f');
    $r = array_pop($a);
    do {
      $r = array( array_pop($a) => $r );
    }while($a);
    print_r($r);
      

  6.   

    我的代码是最罗嗦的。。楼主你还是看8楼老大的代码吧。
    主要就是用到了PHP的一个数组函数array_pop(),作用是弹出(删除)数组的最后一个元素并返回这个元素:
    $a = array('a','b','c','d','e','f');
    $r = array_pop($a);  //执行后:$r = 'f'; $a = array('a','b','c','d','e');
    do {
      $r = array( array_pop($a) => $r );  //第一次执行后$r = array('d' => 'f'); 循环第二次执行后$r = array('c' => array('d' => 'f')
    }while($a);
    print_r($r);