снова меня:
следующий массив;
$myArray = array('FOO', 'BAR', 'HELLO');
мне нужно:
$myArray['FOO']['BAR']['HELLO'] = 0;
есть идеи?
function onion($a) { return $a ? array(array_shift($a) => onion($a)) : 0; } $myArray = array('FOO', 'BAR', 'HELLO'); print_r(onion($myArray));
// edit: на самом деле решение doc лучше, его / ее код немного улучшился
$new = 0; foreach (array_reverse($myArray) as $v) $new = array($v => $new);
$newarr[array_pop($myarr)] = 0; foreach (array_reverse($myarr) as $v) $newarr[$v] = $newarr;
Вы можете попробовать $newArray[$myArray[0]][$myArray[1]][$myArray[2]] = 0;
$newArray = array($oldArray[0] => array($oldArray[1] => array($oldArray[2] => 0)));
вы можете сделать это с помощью рекурсии:
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));
с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));