我正在尝试使用以前的数组中的数组创建父类,有些是重复的,有些则不是。
我有一个像这样吐出的数组: [0] =>排列 ( [parent] =>小狗 [child_cat_1] =>第一类 [child_cat_2] =>第二类 [title] =>标题 [price] => 9.49 [sku] => 3558505550 [old_post_id] => 110 )
[1] => Array
(
[parent] => cats
[child_cat_1] => category one
[child_cat_2] => category six
[title] => Title
[price] => 16.49
[sku] => 2251752419
[old_post_id] => 113
)
[2] => Array
(
[parent] => cats
[child_cat_1] => category three
[child_cat_2] => category nine
[title] => Title
[price] => 59.99
[sku] => 7944100467
[old_post_id] => 114
)
[3] => Array
(
[parent] => dogs
[child_cat_1] => category one
[child_cat_2] => category two
[title] => Title
[price] => 69.99
[sku] => 85932810243
[old_post_id] => 117
)
我很难根据这些数组创建一个新数组,并将其转换为父母和子女的数组。
我尝试做this post said,但我无法让它工作,因为我不完全确定'父母'会是什么。
我尝试过这样做,但我无法弄清楚如何考虑child_cat_2,并删除重复项。我还在Stackoverflow上阅读了几乎所有“构建层次结构的数组”,但我只是想不出这个。
foreach($new_array as $k => $v){
$array[$v['parent']] = $v['child_cat_1'];
}
理想情况下,我要完成的是将每个child_cat_2
安排在child_cat_1
下,然后安排在parent
下,但同时删除重复内容。我认为父母只有11种类型,但这两个孩子各有多达100种。
有人能指出我正确的方向来解决这些数组。
答案 0 :(得分:0)
您所描述的是3级嵌套数组。您发布的代码肯定无法实现。您的节点具有除阵列结构之外的四个属性,因此您应该在循环中构建它们。然后根据其他三个属性将它们放入您的结构中。
$results = array();
foreach ($data as $datum){
$node = array(
'title' => $datum['title']
'price' => $datum['price']
'sku' => $datum['sku']
'old_post_id' => $datum['old_post_id']
);
if (!is_array($results[$datum['parent']])) {
$results[$datum['parent']] = array();
}
if (!is_array($results[$datum['parent']][$datum['child_cat_1']])) {
$results[$datum['parent']]
[$datum['child_cat_1']] = array();
}
if (!is_array($results[$datum['parent']][$datum['child_cat_1']][$datum['child_cat_2']])) {
$results[$datum['parent']]
[$datum['child_cat_1']]
[$datum['child_cat_2']] = array();
}
$results[$datum['parent']]
[$datum['child_cat_1']]
[$datum['child_cat_2']][] = $node;
}