创建一个从字符串变量长度数组 [英] Create variable length array from string
本文介绍了创建一个从字符串变量长度数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
字符串
$字符串='A.B.C.D';
应该创建像
阵列('A'=>阵列('B'=>阵列(....
我设法想出这样的:
function create_array(&$arr, $string, $data){
$parts = explode('.', $string);
$key = array_shift($parts); // first key
$new_arr = array();
$have_empty_slot = false;
if(!isset($arr[$key])){
$arr[$key] = array();
$have_empty_slot = true;
}
$new_arr = &$arr[$key];
foreach($parts as $part){
if(!isset($new_arr[$part])){
$new_arr[$part] = array();
$have_empty_slot = true;
}
$new_arr = &$new_arr[$part];
}
// last one
if($have_empty_slot)
$new_arr = $data;
}
$arr = array('a' => array('aa' => array('aaa' => 555)), 'b' => 55);
create_array($arr, 'c.cc.dd', 4545); // <-- works
create_array($arr, 'a.aa.aa2', 33); // <-- works
create_array($arr, 'a.aa.aaa.aaaaaaa', 4545); // <-- connection closed by remote server lol
print_r($arr);
所以,如果我尝试现有的一组元素的最后一个元素后添加一个新的元素,我得到了连接远程服务器错误关闭。这有什么错呢?
So if I try to add a new element after the last element of an existing set of elements I get that connection closed by remote server error. What's wrong with it?
推荐答案
这应该工作:
function create_array(&$arr,$string,$data){
$a=explode('.',$string);
$last=count($a)-1;
$p=&$arr;
foreach($a as $k=>$key){
if ($k==$last) {
$p[$key]=$data;
} else if (is_array($p)){
$p[$key]=array();
}
$p=&$p[$key];
}
}
这篇关于创建一个从字符串变量长度数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文