php – 动态创建多维数组
发布时间:2020-12-13 17:24:28 所属栏目:PHP教程 来源:网络整理
导读:我正在尝试生成一个多维数组,其深度等于正则表达式中找到的匹配数.数组键是每个匹配的字符串值. 例如: preg_match('/([A-Z])-?([0-9])-?([0-9]{1,3})/i','A-1-001',$matches); 返回: Array ( [0] = A-1-001 [1] = A [2] = 1 [3] = 001) 我要转换为: $fo
我正在尝试生成一个多维数组,其深度等于正则表达式中找到的匹配数.数组键是每个匹配的字符串值.
例如: preg_match('/([A-Z])-?([0-9])-?([0-9]{1,3})/i','A-1-001',$matches); 返回: Array ( [0] => A-1-001 [1] => A [2] => 1 [3] => 001 ) 我要转换为: $foo = array( 'A' => array( '1' => array( '001' => array('some','information') ) ) ); 这样我就可以将它与另一个多维数组合并,如下所示: $bar['A']['1']['001'] = array('some','other','information'); 该过程需要处理任意数量的匹配/维度. 以下是我目前的做法.我没有理解这个概念,因为这种尝试远远落后于我的目标. $foo = array(); $j = count($matches); for ($i = 1; $i < $j; $i++) { $foo[ $matches[$i - 1] ] = $matches[$i]; } /* $foo's structure becomes: Array ( [A-1-001] => A [A] => 1 [1] => 001 ) */ 它只是交换数组键,而不是创建我需要的新子数组. 任何建议或解决方案将不胜感激.谢谢! 解决方法
使用一些PHP-Fu:
$matches = array('A-1-001','A',1,'001'); $info = array('some','information'); print_r(tree($matches,$info)); function tree($array,$info){ $max = count($array)-1; $result = array($array[$max] => $info); for($i=$max-1;$i>0;$result = array($array[$i--] => $result)); return $result; } 输出: Array ( [A] => Array ( [1] => Array ( [001] => Array ( [0] => some [1] => information ) ) ) ) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |