脚本宝典收集整理的这篇文章主要介绍了在PHP中创建具有不确定深度的多维数组,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
$test = array( '110|5100|120' => 'Teacher Salaries','110|5100|130' => 'Other PRofessoinal Services','110|5100|510|1' => 'Primary Supplies','110|5100|510|2' => 'Intermediate Supplies','110|7300|110' => 'Administrator Salaries','110|7300|510' => 'Administrative Supplies','763|5100' => 'ACADemic Grants' ); foreach($test AS $k => $v) { $lvl = explode("|",$k); // Not sure what to do next... }
[110] => Array ( [5100] => Array ( [120] => Teacher Salaries [130] => Other Professional Services [510] => Array ( [1] => Primary Supplies [2] => Intermediate Supplies ) ) [7300] => Array ( [110] => Administrator Salaries [510] => Supplies ) ) [763] => Array ( [5100] => Academic Grants )
我能够提出一个函数,它可以将一个代码中的一个代码正确地分解成一个数组,但是当我尝试将它们合并在一起时,它们会丢失它们的密钥.这是我到目前为止:
function expandedArray($codes,$value) { $decoded = explode("|",$codes); RETURN expandedArraySub($decoded,$value); } function expandedArraySub($decoded = array(),$value = Null) { $k = array_pop($decoded); $out[$k] = $value; if(is_array($decoded) && count($decoded) > 0) { $out = expandedArraySub($decoded,$out); } RETURN $out; }
但是,当我运行以下内容时,我得到一个丢失“110”键的数组,而不是如上所述得到我想要的内容:
$r1 = expandedArray('110|5100|510|1',"Primary Supplies"); // $r1 is Now [ 110 => [5100 => [510 => [ 1 ] ] ] ] $r2 = expandedArray('110|5100|510|2','Intermediate Supplies'); // $r2 is Now [ 110 => [5100 => [510 => [ 2 ] ] ] ] $r = array_merge($r1,$r2);
我得到的结果删除了第一个键,并没有像我希望的那样结合结果.这是我得到的:
[0] => Array ( [5100] => Array ( [510] => Array ( [1] => Primary Supplies ) ) ) [1] => Array ( [5100] => Array ( [510] => Array ( [2] => Intermediate Supplies ) ) )
任何帮助深表感谢!谢谢!
function getVal($data,$chain){ $level = $data; for($i=0;$i<count($chain);$i++){ if(isset($level[$chain[$i]])) $level = $level[$chain[$i]]; else return null; // key does not exist,return null } return $level; } function setVal(&$data,$chain,$value){ $level = &$data; for($i=0;$i<count($chain);$i++){ $level = &$level[$chain[$i]]; // set reference (&) in order to change the value of the object } $level = $value; }
设置使用方式如下:
$output = array(); $test = array( '110|5100|120' => 'Teacher Salaries',$k); setVal($output,$lvl,$v); }
$output应该具有所需的格式.
在my previous post中阅读有关此代码的更多信息
以上是脚本宝典为你收集整理的在PHP中创建具有不确定深度的多维数组全部内容,希望文章能够帮你解决在PHP中创建具有不确定深度的多维数组所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。