我有一个数组和这样的var:
$arrPs =array('p1','p2','pN');
$intVar = 80;
现在我想把它转换成这样的数组:
array(
'p1'=>array(
'p2'=>array(
'pN'=>$intVar
)
)
);
无论$ arrPs数组中有多少个值,这都应该有效。
希望这是有道理的。
/淑娜
答案 0 :(得分:4)
function myWalker($input, $last, &$output = array()) {
if (count($input) > 1) {
$val = array_shift($input);
$output[$val] = array();
myWalker($input, $last, $output[$val]);
}
else {
$output[$input[0]] = $last;
}
return $output;
}
$out = myWalker($arrPs, $intVar);
答案 1 :(得分:1)
eval
对此有好处,自行承担风险,如果数据可信,
eval ('$rtn[\''.implode("']['", $arrPs).'\']='.$intVar.';');
var_dump($rtn);
答案 2 :(得分:0)
我建议这样的事情:
function buildNestedArrays($array, $initVar) {
$current = current($array);
$next = next($array);
if ($next === FALSE) {
return array($current => $initVar);
} else {
return array($current => buildNestedArrays($array, $initVar));
}
}
用法:
reset($arrPs);
print_r(buildNestedArrays($arrPs, $intVar));
答案 3 :(得分:0)
$arrPs = array('p1','p2','pN');
$intVar = 80;
$new_array = array();
$counter = 1;
for( $i = count($arrPs); $i >= 0; $i-- )
{
if( $counter==1)
{
$new_array = $intVar;
}
else
{
$new_array = array( $arrPs[$i] => $new_array);
}
$counter++;
}
print_r($new_array);