再次我:
以下数组;
$myArray = array('FOO', 'BAR', 'HELLO');
我需要:
$myArray['FOO']['BAR']['HELLO'] = 0;
任何想法?
答案 0 :(得分:14)
function onion($a) {
return $a ? array(array_shift($a) => onion($a)) : 0;
}
$myArray = array('FOO', 'BAR', 'HELLO');
print_r(onion($myArray));
//编辑:实际上doc's solution更好,他/她的代码,有点改进
$new = 0;
foreach (array_reverse($myArray) as $v)
$new = array($v => $new);
答案 1 :(得分:2)
$newarr[array_pop($myarr)] = 0;
foreach (array_reverse($myarr) as $v)
$newarr[$v] = $newarr;
答案 2 :(得分:1)
您可以尝试$newArray[$myArray[0]][$myArray[1]][$myArray[2]] = 0;
答案 3 :(得分:1)
$newArray = array($oldArray[0] => array($oldArray[1] => array($oldArray[2] => 0)));
答案 4 :(得分:1)
你可以通过递归来做到这一点:
function arrToKeys(&$arr,$initialCount){
if($initialCount == 0 ){
return $arr;
}
else{
$newKey = $arr[0];
unset($arr[0]);
$arr[$newKey] = $arr;
$initialCount--;
return arrToKeys($arr,$initialCount);
}
}
//then call it like this
$newArr = arrToKeys($myArray,count($myArray));