有一个数组array('a','b','c','d','e','f'),请编程达成下图的效果。
Array
(
[a]=>Array
(
[b]=>Array
(
[c]=>Array
(
[d]=>Array
(
[e]=>f
)
)
)
)
)这对于我一个初学php的来说,好难呀!!所以请高人点点呀!
Array
(
[a]=>Array
(
[b]=>Array
(
[c]=>Array
(
[d]=>Array
(
[e]=>f
)
)
)
)
)这对于我一个初学php的来说,好难呀!!所以请高人点点呀!
$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);
$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 ) ) ) ) )
$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
) ) ) ))
$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);
$a = array('a','b','c','d','e','f');
$r = array_pop($a);
do {
$r = array( array_pop($a) => $r );
}while($a);
print_r($r);
主要就是用到了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);