我以树的形式拥有这个多维数组。
$menu = array('records'=>array(
array('id'=>1,
'parent_id'=>NULL,
'name'=>'Food',
'type'=>'category',
'records'=>array(
array('id'=>2,
'parent_id'=>1,
'name'=>'Breakfast',
'type'=>'category',
'records'=>array(
array('id'=>3,
'parent_id'=>2,
'name'=>'Omelette',
'type'=>'category',
'records'=>array(
array('id'=>4,
'parent_id'=>3,
'name'=>'Turkish',
'type'=>'item'),
array('id'=>5,
'parent_id'=>3,
'name'=>'Indian',
'type'=>'item'),
array('id'=>6,
'parent_id'=>1,
'name'=>'American',
'type'=>'item')
),
'statistics'=>array('sale_qty'=>0,
'gross_sale'=>0,
'net_sale'=>0,
'comp_qty'=>0,
'comp_total'=>0)
),
array('id'=>7,
'parent_id'=>1,
'name'=>'Bread',
'type'=>'item')
),
'statistics'=>array('sale_qty'=>0,
'gross_sale'=>0,
'net_sale'=>0,
'comp_qty'=>0,
'comp_total'=>0)
),
array('id'=>8,
'parent_id'=>1,
'name'=>'Jam',
'type'=>'item')
),
'statistics'=>array('sale_qty'=>0,
'gross_sale'=>0,
'net_sale'=>0,
'comp_total'=>0)
)
),
'statistics'=>array('sale_qty'=>0,
'gross_sale'=>0,
'net_sale'=>0,
'comp_qty'=>0,
'comp_total'=>0)
);
然后我有另一个日志数组
$log = array('ids'=>array(5,8),
5=>array('id'=>5,
'parent_id'=>3,
'name'=>'Indian',
'type'=>'item',
'item_price'=>'475.00',
'item_tax'=>'76.000000',
'sale_count'=>'1',
'gross_total'=>551,
'complimentry_count'=>'0',
'complimentry_total'=>0,
'complimentry_net_total'=>0,
'net_total'=>475),
8=>array('id'=>8,
'parent_id'=>1,
'name'=>'Jam',
'type'=>'item',
'item_price'=>'603.45',
'item_tax'=>'"96.55',
'sale_count'=>'1',
'gross_total'=>700,
'complimentry_count'=>'0',
'complimentry_total'=>0,
'complimentry_net_total'=>0,
'net_total'=>603.45)
);
我在这里要做的是通过匹配'id'键在$ menu数组中搜索$ log ['ids']中的值。如果在$ menu中找到该值,则将其替换为$ log。中找到的相应数组。
例如,如果找到$ menu中的值5,则将其替换为$ log [5]。
完成此操作后,将删除不需要且不在路径中的其余节点,并且每个叶子(项目)的sale_count等的总和将等于其离开直接父统计信息节点的值
最终数组会像这样
$finalmenu = array('records'=>array(
array('id'=>1,
'parent_id'=>NULL,
'name'=>'Food',
'type'=>'category',
'records'=>array(
array('id'=>2,
'parent_id'=>1,
'name'=>'Breakfast',
'type'=>'category',
'records'=>array(
array('id'=>3,
'parent_id'=>2,
'name'=>'Omelette',
'type'=>'category',
'records'=>array(
array('id'=>5,
'parent_id'=>3,
'name'=>'Indian',
'type'=>'item',
'item_price'=>'475.00',
'item_tax'=>'76.000000',
'sale_count'=>'1',
'gross_total'=>551,
'complimentry_count'=>'0',
'complimentry_total'=>0,
'complimentry_net_total'=>0,
'net_total'=>475)
),
'statistics'=>array('sale_qty'=>1,
'gross_sale'=>551,
'net_sale'=>475,
'comp_qty'=>0,
'comp_total'=>0)
),
),
'statistics'=>array('sale_qty'=>1,
'gross_sale'=>551,
'net_sale'=>475,
'comp_qty'=>0,
'comp_total'=>0)
),
array('id'=>8,
'parent_id'=>1,
'name'=>'Jam',
'type'=>'item',
'item_price'=>'603.45',
'item_tax'=>'96.55',
'sale_count'=>'1',
'gross_total'=>700,
'complimentry_count'=>'0',
'complimentry_total'=>0,
'complimentry_net_total'=>0,
'net_total'=>603.45)
),
'statistics'=>array('sale_qty'=>2,
'gross_sale'=>1251,
'net_sale'=>1078.45,
'comp_total'=>0)
)
),
'statistics'=>array('sale_qty'=>2,
'gross_sale'=>1251,
'net_sale'=>1078.45,
'comp_total'=>0)
);
我一直试图让这件事完成一周左右,但我只能到达更换部件,但之后却没有。我用RecursiveArrayIterator尝试了RecursiveIteratorIterator,但没有用。
如果有人对此作出回答,我们将非常感激。
感谢。