1

又是我:

跟随数组;

$myArray = array('FOO', 'BAR', 'HELLO');

我需要:

$myArray['FOO']['BAR']['HELLO'] = 0;

有任何想法吗?

4

5 回答 5

14
 function onion($a) {
  return $a ? array(array_shift($a) => onion($a)) : 0;
}

$myArray = array('FOO', 'BAR', 'HELLO');
print_r(onion($myArray));

//编辑:实际上doc的解决方案更好,他/她的代码,有点改进

  $new = 0;
  foreach (array_reverse($myArray) as $v)
       $new = array($v => $new);
于 2009-11-12T14:53:21.390 回答
2
$newarr[array_pop($myarr)] = 0;
foreach (array_reverse($myarr) as $v)
    $newarr[$v] = $newarr;
于 2009-11-12T14:56:38.627 回答
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));
于 2009-11-12T14:48:27.473 回答
1

你可以试试$newArray[$myArray[0]][$myArray[1]][$myArray[2]] = 0;

于 2009-11-12T14:43:26.560 回答
1
$newArray = array($oldArray[0] => array($oldArray[1] => array($oldArray[2] => 0)));
于 2009-11-12T14:44:17.900 回答