PHP数组合并问题
发布时间:2020-12-13 16:17:22 所属栏目:PHP教程 来源:网络整理
导读:我相信过去有很多像这样的问题,如果它出现之前很抱歉.基本上,我正在尝试合并两个多维数组,而不是为任何重复键创建2个键. 这是一个例子: $one = array( 'foo' = array( 'bar' = array( 'hello' = 'world','boom' = 'universe' ),'whiz' = array( 'wham' = ar
我相信过去有很多像这样的问题,如果它出现之前很抱歉.基本上,我正在尝试合并两个多维数组,而不是为任何重复键创建2个键.
这是一个例子: $one = array( 'foo' => array( 'bar' => array( 'hello' => 'world','boom' => 'universe' ),'whiz' => array( 'wham' => array( 'blam' => 'kaplow' ) ) ) ); $two = array( 'foo' => array( 'whiz' => 'woo','king' => array( 'kong' => 'animal' ) ) ); 如果我要使用array_merge_recursive($one,$two);我会得到以下结果: array(1) { ["foo"]=> array(3) { ["bar"]=> array(2) { ["hello"]=> string(5) "world" ["boom"]=> string(8) "universe" } ["whiz"]=> array(2) { ["wham"]=> array(1) { ["blam"]=> string(6) "kaplow" } // This is the problem. [0]=> string(3) "woo" } ["king"]=> array(1) { ["kong"]=> string(6) "animal" } } } 如果我要使用array_merge($one,$two);我会得到以下结果: array(1) { ["foo"]=> array(2) { // This is good but the rest of the array is gone. ["whiz"]=> string(3) "woo" ["king"]=> array(1) { ["kong"]=> string(6) "animal" } } } 这是我之后的输出: array(1) { ["foo"]=> array(3) { ["bar"]=> array(2) { ["hello"]=> string(5) "world" ["boom"]=> string(8) "universe" } // Key is replaced,rest of the array remains intact. ["whiz"]=> string(3) "woo" ["king"]=> array(1) { ["kong"]=> string(6) "animal" } } } 所以基本上,我是在使用array_merge_recursive()的功能,但是它也像array_replace_recursive()一样工作,你们有什么想法吗? – 我现在已经接受了一个答案,但不要气馁显示任何其他可能更好的方法,我会回来检查. 多谢你们. 解决方法
我想你在寻找:
function farray_merge_recursive() { if (func_num_args() < 2) { trigger_error(__FUNCTION__ .' needs two or more array arguments',E_USER_WARNING); return; } $arrays = func_get_args(); $merged = array(); while ($arrays) { $array = array_shift($arrays); if (!is_array($array)) { trigger_error(__FUNCTION__ .' encountered a non array argument',E_USER_WARNING); return; } if (!$array) continue; foreach ($array as $key => $value) if (is_string($key)) if (is_array($value) && array_key_exists($key,$merged) && is_array($merged[$key])) $merged[$key] = call_user_func(__FUNCTION__,$merged[$key],$value); else $merged[$key] = $value; else $merged[] = $value; } return $merged; } 我认为我从PHP手册中偷走了cos我不想自己写. 我用它来组合和覆盖我的MVC框架的配置数组,它运行良好. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |