从键阵列和一个单一的值填充多维数组 [英] Fill a multi-dimensional array from an array of keys and a single value
本文介绍了从键阵列和一个单一的值填充多维数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
有没有把一个数组多维按键,并添加一个值一个优雅的方式?
$值=您发现巨人!
$键=阵列(费,网络,FO,FUM);$输出[flipster($键)] = $价值;
// $输出['费'] ['科幻'] ['佛'] ['FUM'] =您发现巨人!
我写了这个功能,它的工作原理和放大器;做什么,我需要做的,但我不认为这是最好的解决办法...
函数flipster($数组$值){
$ OUT =阵列();
$键= $阵列[0];
array_shift($数组); 如果(计数($数组)大于0){
从$ [$关键] = flipster($数组$值);
}其他{
从$ [$关键] = $价值;
} 返回$出;
}
在最后,我得到我的费,网络,从一个循环,所以在循环,我做这样的事情来创建一个新的数组:
$ OUT = array_merge_recursive($出来,flipster($键,$值));
解决方案
这样如何使用递归:
函数flipster($改编,$值){
如果(计数($ ARR)== 1){
返回阵列($改编[0] => $值);
} 返回阵列(array_shift($ ARR)=> flipster($改编,$值));
}
$值=您发现巨人!
$键=阵列(费,网络,FO,FUM);$输出= flipster($键,$值);
回声$输出[费] [连接] [FO] [FUM];
Is there an elegant way to turn an array into multi-dimensional keys and add in a value ?
$value = "You found the giant!"
$keys = array("fee", "fi", "fo", "fum");
$output[ flipster( $keys ) ] = $value;
// $output['fee']['fi']['fo']['fum'] = "You found the giant!";
I wrote this function, which works & does what I need it to do, but I don't think it's the best solution...
function flipster( $array, $value ) {
$out = array();
$key = $array[0];
array_shift( $array );
if( count( $array ) > 0 ) {
$out[ $key ] = flipster( $array, $value );
} else {
$out[ $key ] = $value;
}
return $out;
}
In the end, I'm getting my "fee" and "fi" from a loop, so in the loop I'm doing something like this to create a new array:
$out = array_merge_recursive($out, flipster( $keys, $value ) );
解决方案
How about this using recursiveness:
function flipster( $arr, $value ) {
if(count($arr)==1){
return array($arr[0] => $value);
}
return array(array_shift($arr) => flipster( $arr, $value ));
}
$value = "You found the giant!";
$keys = array("fee", "fi", "fo", "fum");
$output = flipster( $keys, $value );
echo $output["fee"]["fi"]["fo"]["fum"];
这篇关于从键阵列和一个单一的值填充多维数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文