各位大神,帮我忙处理一下,这个问题搞好了久没有搞成
 场面 《多维护数组的合并,及继承父无素的值》
意思就是,A数组做为参考标地,及B数组合并,如果A数组的子元素,在B数组里找不到,就把他的父系元素在B数组里查找,一起找到最顶层。
测试代码如下
<!DOCTYPE html>
<html>
<head>
<title>测试</title>
</head>
<body>
  <form action="" method="post" enctype="multipart/form-data">
   <input type="text" name="info[name1][1]" value="info[name1][1]">
   <input type="text" name="info[name1][2]" value="info[name1][2]">
   <input type="text" name="info[]" value="info[]">
   <input type="text" name="info[sex][low][]" value="info[sex][]">
   <input type="text" name="info[sex][low][]" value="info[sex][]">
   <input type="text" name="info[sex][]" value="info[sex][]">
   <input type="text" name="info[sex][]" value="info[sex][]">
   <input type="text" name="name" value="naem">
   <input name="" type="submit" value="提交" />
  </form>
</body>
</html>if(!empty($_POST))
{
var_dump($_POST);

$bb =  array(
'info'=>array(
'rule'=>'require',
'msg'=>'必须填写',
'value'=>'默认值'
),

'info[sex][low]'=>array(

'rule'=>'require',
'msg'=>'必须填写',
'value'=>'默认值'
),
'info[sex][0]' => array(
'rule'=>'require|asd|ddd|',
'msg'=>'必须填写',
'value'=>'默认值',
),
'name' => array(
'rule'=>'require|asd|ddd|',
'msg'=>'必须填写',
'value'=>'默认值',
),
);
//var_dump(rule()['msg']);

    //array_walk_recursive($_POST, 'test_print',$bb);}
说明,就是POST过的数组 跟BB数组组行合并,如例 info[name1][1] 这个元素 在BB这个数组里是找不到这个元素的,那就找 info[name1][1] 的父系元素  info[name1] 在BB这个数组里也是的不到的,那就在往上一层找他的父素 info,那在BB这个数组里是可以找到 info这个元素,那我们就把 BB里的 info元素跟_POST数组 info[name1][1] 进行合并,合并结果为
 info[name1][1] = array(
                             'rule'=>'require',
'msg'=>'必须填写',
'value'=>empty( info[name1][1]) ? '默认值' :  info[name1][1],)
大致的需求就是这样

解决方案 »

  1.   

    这个简单啊 这个表单是模拟表单吧  说白了是优先比对的问题
    接收$_POST  我们封装一个函数分析里面的key值  如info[sub1][sub2][sub3]...
    1,遍历$_POST -- 只取key值保存 0=>key1 1=>key2
    2,吧info[sub1][sub2][sub3]...把每个数组分割成 array(0=>info 1=>info[sub1] 2=>info[sub1][sub2] ..)的形式  具体:explod('[',$key), 去除右侧的】 trim(,']') 
    3,foreach 每个数组  for($i=len($array),$i>=0,$i--)  从最小的键值开始比对 也就是先从nfo[sub1][sub2]比对 然后比对info[sub1]
    4,如果array_key_exist(info[sub1],$bb)... //取出post中的值$_post[info[sub1]]合并 退出这个数组的循环 遍历下个数组 
      

  2.   

    能写一下,demo吗
      

  3.   

    array_merge_recursive
    一个小小的表单,弄的那么复杂干什么?
    你难为用户,用户就把腿跑路
      

  4.   


    主要是为了表单的验证,前端可以少些代码,规则的继承!
    版主:我也常试过用array_walk_recursive() 但就是没有成功,我现在用你的这个array_merge_recursive()!
    @xuzuning 关于这个验证规则的继承,你有没有更好的思路?
      

  5.   

    @ xuzuning  array_merge_recursive()及这个,array_replace_recursive 都还无法达到那个效果,
    你看看能不能写一下实列,指点一下呢