I have an parent child array similar to this:
Array
(
[0] => Array
(
[category_id] => 1
[category_name] => Home & Garden
[parent_id] => 0
[level] => 1
)
[1] => Array
(
[category_id] => 2
[category_name] => Kitchen & Dining
[parent_id] => 1
[level] => 2
)
[2] => Array
(
[category_id] => 3
[category_name] => Food & Beverage Carriers
[parent_id] => 2
[level] => 3
)
[3] => Array
(
[category_id] => 4
[category_name] => Flasks
[parent_id] => 3
[level] => 4
)
[4] => Array
(
[category_id] => 5
[category_name] => Clothing & Accessories
[parent_id] => 0
[level] => 1
)
[5] => Array
(
[category_id] => 6
[category_name] => Clothing
[parent_id] => 5
[level] => 2
)
[6] => Array
(
[category_id] => 7
[category_name] => Shorts
[parent_id] => 6
[level] => 3
)
[7] => Array
(
[category_id] => 8
[category_name] => Shirts & Tops
[parent_id] => 6
[level] => 3
)
[8] => Array
(
[category_id] => 9
[category_name] => Jumpers & Cardigans
[parent_id] => 8
[level] => 4
)
[9] => Array
(
[category_id] => 10
[category_name] => T-Shirts
[parent_id] => 8
[level] => 4
)
[10] => Array
(
[category_id] => 11
[category_name] => Skirts
[parent_id] => 6
[level] => 3
)
[11] => Array
(
[category_id] => 12
[category_name] => Shirts & Blouses
[parent_id] => 8
[level] => 4
)
[12] => Array
(
[category_id] => 13
[category_name] => Trousers & Jeans
[parent_id] => 6
[level] => 3
)
[13] => Array
(
[category_id] => 14
[category_name] => Chinos
[parent_id] => 13
[level] => 4
)
[14] => Array
(
[category_id] => 15
[category_name] => Tops
[parent_id] => 6
[level] => 3
)
[15] => Array
(
[category_id] => 16
[category_name] => Sweatshirts
[parent_id] => 8
[level] => 4
)
[16] => Array
(
[category_id] => 17
[category_name] => Clothing Accessories
[parent_id] => 5
[level] => 2
)
[17] => Array
(
[category_id] => 18
[category_name] => Hats
[parent_id] => 17
[level] => 3
)
[18] => Array
(
[category_id] => 19
[category_name] => Shirts
[parent_id] => 15
[level] => 4
)
[19] => Array
(
[category_id] => 20
[category_name] => Cargo Trousers
[parent_id] => 13
[level] => 4
)
[20] => Array
(
[category_id] => 21
[category_name] => Underwear & Socks
[parent_id] => 6
[level] => 3
)
[21] => Array
(
[category_id] => 22
[category_name] => Socks
[parent_id] => 21
[level] => 4
)
[22] => Array
(
[category_id] => 23
[category_name] => Polo Shirts
[parent_id] => 8
[level] => 4
)
[23] => Array
(
[category_id] => 24
[category_name] => Apparel & Accessories
[parent_id] => 0
[level] => 1
)
[24] => Array
(
[category_id] => 25
[category_name] => Clothing Accessories
[parent_id] => 24
[level] => 2
)
[25] => Array
(
[category_id] => 26
[category_name] => Belts
[parent_id] => 25
[level] => 3
)
[26] => Array
(
[category_id] => 27
[category_name] => Gloves & Mittens
[parent_id] => 17
[level] => 3
)
[27] => Array
(
[category_id] => 28
[category_name] => Gloves
[parent_id] => 27
[level] => 4
)
[28] => Array
(
[category_id] => 29
[category_name] => Shoes
[parent_id] => 24
[level] => 2
)
[29] => Array
(
[category_id] => 30
[category_name] => Sandals
[parent_id] => 29
[level] => 3
)
[30] => Array
(
[category_id] => 31
[category_name] => Thongs & Flip-Flops
[parent_id] => 30
[level] => 4
)
[31] => Array
(
[category_id] => 32
[category_name] => Luggage & Bags
[parent_id] => 0
[level] => 1
)
[32] => Array
(
[category_id] => 33
[category_name] => Messenger Bags
[parent_id] => 32
[level] => 2
)
[33] => Array
(
[category_id] => 34
[category_name] => Jeans
[parent_id] => 13
[level] => 4
)
[34] => Array
(
[category_id] => 35
[category_name] => Clothing
[parent_id] => 24
[level] => 2
)
[35] => Array
(
[category_id] => 36
[category_name] => Pants
[parent_id] => 35
[level] => 3
)
[36] => Array
(
[category_id] => 37
[category_name] => Jeans
[parent_id] => 36
[level] => 4
)
[37] => Array
(
[category_id] => 38
[category_name] => Handbags, Wallets & Cases
[parent_id] => 5
[level] => 2
)
[38] => Array
(
[category_id] => 39
[category_name] => Wallets & Money Clips
[parent_id] => 38
[level] => 3
)
[39] => Array
(
[category_id] => 40
[category_name] => Baseball Hats
[parent_id] => 18
[level] => 4
)
[40] => Array
(
[category_id] => 41
[category_name] => Handbag & Wallet Accessories
[parent_id] => 5
[level] => 2
)
[41] => Array
(
[category_id] => 42
[category_name] => Key Chains
[parent_id] => 41
[level] => 3
)
[42] => Array
(
[category_id] => 43
[category_name] => Shoes
[parent_id] => 5
[level] => 2
)
[43] => Array
(
[category_id] => 44
[category_name] => Boots
[parent_id] => 43
[level] => 3
)
[44] => Array
(
[category_id] => 45
[category_name] => Waterproof Boots & Wellingtons
[parent_id] => 44
[level] => 4
)
[45] => Array
(
[category_id] => 46
[category_name] => Barware
[parent_id] => 2
[level] => 3
)
[46] => Array
(
[category_id] => 47
[category_name] => Drink Shakers & Tools
[parent_id] => 46
[level] => 4
)
[47] => Array
(
[category_id] => 48
[category_name] => Bottle Openers
[parent_id] => 47
[level] => 5
)
[48] => Array
(
[category_id] => 49
[category_name] => Tableware
[parent_id] => 2
[level] => 3
)
[49] => Array
(
[category_id] => 50
[category_name] => Drinkware
[parent_id] => 49
[level] => 4
)
[50] => Array
(
[category_id] => 51
[category_name] => Mugs
[parent_id] => 50
[level] => 5
)
[51] => Array
(
[category_id] => 52
[category_name] => Outerwear
[parent_id] => 6
[level] => 3
)
[52] => Array
(
[category_id] => 53
[category_name] => Coats & Jackets
[parent_id] => 52
[level] => 4
)
[53] => Array
(
[category_id] => 54
[category_name] => Puffer jackets
[parent_id] => 53
[level] => 5
)
[54] => Array
(
[category_id] => 55
[category_name] => Shirts & Tops
[parent_id] => 35
[level] => 3
)
[55] => Array
(
[category_id] => 56
[category_name] => T-Shirts
[parent_id] => 55
[level] => 4
)
[56] => Array
(
[category_id] => 57
[category_name] => T-Shirts
[parent_id] => 15
[level] => 4
)
[57] => Array
(
[category_id] => 58
[category_name] => Sandals
[parent_id] => 43
[level] => 3
)
[58] => Array
(
[category_id] => 59
[category_name] => Thongs & Flip Flops
[parent_id] => 58
[level] => 4
)
[59] => Array
(
[category_id] => 60
[category_name] => Belts
[parent_id] => 17
[level] => 3
)
[60] => Array
(
[category_id] => 61
[category_name] => Cargo Shorts
[parent_id] => 7
[level] => 4
)
[61] => Array
(
[category_id] => 62
[category_name] => Jumpers & Cardigans
[parent_id] => 15
[level] => 4
)
[62] => Array
(
[category_id] => 63
[category_name] => Cosmetic & Toiletry Bags
[parent_id] => 32
[level] => 2
)
[63] => Array
(
[category_id] => 64
[category_name] => Activewear
[parent_id] => 35
[level] => 3
)
[64] => Array
(
[category_id] => 65
[category_name] => Sweatshirts
[parent_id] => 64
[level] => 4
)
[65] => Array
(
[category_id] => 66
[category_name] => Sun Hats
[parent_id] => 18
[level] => 4
)
[66] => Array
(
[category_id] => 67
[category_name] => Fleece Jackets
[parent_id] => 53
[level] => 5
)
[67] => Array
(
[category_id] => 68
[category_name] => Gilets
[parent_id] => 52
[level] => 4
)
[68] => Array
(
[category_id] => 69
[category_name] => Handbags
[parent_id] => 38
[level] => 3
)
[69] => Array
(
[category_id] => 70
[category_name] => Tote Bags & Shoppers
[parent_id] => 69
[level] => 4
)
[70] => Array
(
[category_id] => 71
[category_name] => Outdoor Shoes
[parent_id] => 29
[level] => 3
)
[71] => Array
(
[category_id] => 72
[category_name] => Water Shoes
[parent_id] => 71
[level] => 4
)
[72] => Array
(
[category_id] => 73
[category_name] => Backpacks
[parent_id] => 32
[level] => 2
)
[73] => Array
(
[category_id] => 74
[category_name] => Shirts & Blouses
[parent_id] => 55
[level] => 4
)
[74] => Array
(
[category_id] => 75
[category_name] => Scarves & Snoods
[parent_id] => 17
[level] => 3
)
[75] => Array
(
[category_id] => 76
[category_name] => Suitcases
[parent_id] => 32
[level] => 2
)
[76] => Array
(
[category_id] => 77
[category_name] => Hand Luggage
[parent_id] => 76
[level] => 3
)
[77] => Array
(
[category_id] => 78
[category_name] => Vests & Tank Tops
[parent_id] => 8
[level] => 4
)
[78] => Array
(
[category_id] => 79
[category_name] => Parasols & Umbrellas
[parent_id] => 1
[level] => 2
)
[79] => Array
(
[category_id] => 80
[category_name] => Carry-On Luggage
[parent_id] => 76
[level] => 3
)
[80] => Array
(
[category_id] => 81
[category_name] => Dresses
[parent_id] => 6
[level] => 3
)
[81] => Array
(
[category_id] => 82
[category_name] => Day Dresses
[parent_id] => 81
[level] => 4
)
[82] => Array
(
[category_id] => 83
[category_name] => Cargo Pants
[parent_id] => 13
[level] => 4
)
[83] => Array
(
[category_id] => 84
[category_name] => Hand Luggage
[parent_id] => 32
[level] => 2
)
[84] => Array
(
[category_id] => 85
[category_name] => Shoulder Bags
[parent_id] => 69
[level] => 4
)
[85] => Array
(
[category_id] => 86
[category_name] => Bermuda Shorts
[parent_id] => 7
[level] => 4
)
[86] => Array
(
[category_id] => 87
[category_name] => Shorts
[parent_id] => 35
[level] => 3
)
[87] => Array
(
[category_id] => 88
[category_name] => Cargo Shorts
[parent_id] => 87
[level] => 4
)
[88] => Array
(
[category_id] => 89
[category_name] => Trousers
[parent_id] => 6
[level] => 3
)
[89] => Array
(
[category_id] => 90
[category_name] => Casual Trousers
[parent_id] => 89
[level] => 4
)
[90] => Array
(
[category_id] => 91
[category_name] => Handbag & Wallet Accessories
[parent_id] => 24
[level] => 2
)
[91] => Array
(
[category_id] => 92
[category_name] => Lanyards
[parent_id] => 91
[level] => 3
)
[92] => Array
(
[category_id] => 93
[category_name] => Duffel Bags
[parent_id] => 32
[level] => 2
)
[93] => Array
(
[category_id] => 94
[category_name] => Polo Shirts
[parent_id] => 15
[level] => 4
)
[94] => Array
(
[category_id] => 95
[category_name] => Skorts
[parent_id] => 6
[level] => 3
)
[95] => Array
(
[category_id] => 96
[category_name] => Casual Jackets
[parent_id] => 53
[level] => 5
)
[96] => Array
(
[category_id] => 97
[category_name] => Leggings
[parent_id] => 89
[level] => 4
)
[97] => Array
(
[category_id] => 98
[category_name] => Canteens
[parent_id] => 3
[level] => 4
)
[98] => Array
(
[category_id] => 99
[category_name] => Caps
[parent_id] => 18
[level] => 4
)
[99] => Array
(
[category_id] => 100
[category_name] => Baseball Hats
[parent_id] => 99
[level] => 5
)
[100] => Array
(
[category_id] => 101
[category_name] => Rain Gear
[parent_id] => 52
[level] => 4
)
[101] => Array
(
[category_id] => 102
[category_name] => Waterproof Coats
[parent_id] => 101
[level] => 5
)
[102] => Array
(
[category_id] => 103
[category_name] => Capes & Ponchos
[parent_id] => 53
[level] => 5
)
[103] => Array
(
[category_id] => 104
[category_name] => Sweatshirts
[parent_id] => 15
[level] => 4
)
[104] => Array
(
[category_id] => 105
[category_name] => Outdoor Shoes
[parent_id] => 43
[level] => 3
)
[105] => Array
(
[category_id] => 106
[category_name] => Water Shoes
[parent_id] => 105
[level] => 4
)
[106] => Array
(
[category_id] => 107
[category_name] => Polo Shirts
[parent_id] => 55
[level] => 4
)
[107] => Array
(
[category_id] => 108
[category_name] => Dresses
[parent_id] => 35
[level] => 3
)
[108] => Array
(
[category_id] => 109
[category_name] => Day Dresses
[parent_id] => 108
[level] => 4
)
[109] => Array
(
[category_id] => 110
[category_name] => Sweaters & Cardigans
[parent_id] => 55
[level] => 4
)
[110] => Array
(
[category_id] => 111
[category_name] => Shopping Totes
[parent_id] => 32
[level] => 2
)
[111] => Array
(
[category_id] => 112
[category_name] => Sweatshirts
[parent_id] => 55
[level] => 4
)
[112] => Array
(
[category_id] => 113
[category_name] => Scarves & Shawls
[parent_id] => 25
[level] => 3
)
[113] => Array
(
[category_id] => 114
[category_name] => Handbags, Wallets & Cases
[parent_id] => 24
[level] => 2
)
[114] => Array
(
[category_id] => 115
[category_name] => Handbags
[parent_id] => 114
[level] => 3
)
[115] => Array
(
[category_id] => 116
[category_name] => Tote Handbags
[parent_id] => 115
[level] => 4
)
[116] => Array
(
[category_id] => 117
[category_name] => Underwear & Socks
[parent_id] => 35
[level] => 3
)
[117] => Array
(
[category_id] => 118
[category_name] => Socks
[parent_id] => 117
[level] => 4
)
[118] => Array
(
[category_id] => 119
[category_name] => Cross-Body Handbags
[parent_id] => 115
[level] => 4
)
[119] => Array
(
[category_id] => 120
[category_name] => Underwear
[parent_id] => 117
[level] => 4
)
[120] => Array
(
[category_id] => 121
[category_name] => Outerwear
[parent_id] => 35
[level] => 3
)
[121] => Array
(
[category_id] => 122
[category_name] => Coats & Jackets
[parent_id] => 121
[level] => 4
)
[122] => Array
(
[category_id] => 123
[category_name] => Camisoles & Tank Tops
[parent_id] => 55
[level] => 4
)
[123] => Array
(
[category_id] => 124
[category_name] => Skirts
[parent_id] => 35
[level] => 3
)
[124] => Array
(
[category_id] => 125
[category_name] => Fleece Jackets
[parent_id] => 122
[level] => 5
)
[125] => Array
(
[category_id] => 126
[category_name] => Khaki & Chino Pants
[parent_id] => 36
[level] => 4
)
[126] => Array
(
[category_id] => 127
[category_name] => Cargo Pants
[parent_id] => 36
[level] => 4
)
[127] => Array
(
[category_id] => 128
[category_name] => Hats
[parent_id] => 25
[level] => 3
)
[128] => Array
(
[category_id] => 129
[category_name] => Beanies
[parent_id] => 128
[level] => 4
)
[129] => Array
(
[category_id] => 130
[category_name] => Gloves & Mittens
[parent_id] => 25
[level] => 3
)
[130] => Array
(
[category_id] => 131
[category_name] => Scarves & Shawls
[parent_id] => 17
[level] => 3
)
[131] => Array
(
[category_id] => 132
[category_name] => Pants
[parent_id] => 6
[level] => 3
)
[132] => Array
(
[category_id] => 133
[category_name] => Khaki & Chino Pants
[parent_id] => 132
[level] => 4
)
[133] => Array
(
[category_id] => 134
[category_name] => Tote Handbags
[parent_id] => 69
[level] => 4
)
[134] => Array
(
[category_id] => 135
[category_name] => Camisoles & Tank Tops
[parent_id] => 8
[level] => 4
)
[135] => Array
(
[category_id] => 136
[category_name] => Jeans
[parent_id] => 132
[level] => 4
)
[136] => Array
(
[category_id] => 137
[category_name] => Sweaters & Cardigans
[parent_id] => 8
[level] => 4
)
[137] => Array
(
[category_id] => 138
[category_name] => Cargo Pants
[parent_id] => 132
[level] => 4
)
[138] => Array
(
[category_id] => 139
[category_name] => Beanies
[parent_id] => 18
[level] => 4
)
[139] => Array
(
[category_id] => 140
[category_name] => Parasols & Rain Umbrellas
[parent_id] => 1
[level] => 2
)
[140] => Array
(
[category_id] => 141
[category_name] => Lanyards
[parent_id] => 41
[level] => 3
)
[141] => Array
(
[category_id] => 142
[category_name] => Cross-Body Handbags
[parent_id] => 69
[level] => 4
)
[142] => Array
(
[category_id] => 143
[category_name] => Khaki & Chino Trousers
[parent_id] => 13
[level] => 4
)
[143] => Array
(
[category_id] => 144
[category_name] => Underwear
[parent_id] => 21
[level] => 4
)
)
How to convert this array similar to this:
Array
(
[0] => Array
(
[0] => Home & Garden
[1] => Kitchen & Dining
[2] => Food & Beverage Carriers
[3] => Flasks
[4] =>
)
[1] => Array
(
[0] =>
[1] =>
[2] =>
[3] => Canteens
[4] =>
)
[2] => Array
(
[0] =>
[1] =>
[2] => Barware
[3] => Drink Shakers & Tools
[4] => Bottle Openers
)
[3] => Array
(
[0] =>
[1] =>
[2] => Tableware
[3] => Drinkware
[4] => Mugs
)
[4] => Array
(
[0] =>
[1] => Parasols & Umbrellas
[2] =>
[3] =>
[4] =>
)
[5] => Array
(
[0] =>
[1] => Parasols & Rain Umbrellas
[2] =>
[3] =>
[4] =>
)
[6] => Array
(
[0] => Clothing & Accessories
[1] => Clothing
[2] => Shorts
[3] => Cargo Shorts
[4] =>
)
)
Parent child representation for reference:
Any Ideas???
Very interesting task. See my solution below:
categories array
$categoriesrRaw = Array
(
'0' => Array
(
'category_id' => 1,
'category_name' => 'Home & Garden',
'parent_id' => 0,
'level' => 1,
),
'1' => Array
(
'category_id' => 2,
'category_name' => 'Kitchen & Dining',
'parent_id' => 1,
'level' => 2,
),
'2' => Array
(
'category_id' => 3,
'category_name' => 'Food & Beverage Carriers',
'parent_id' => 2,
'level' => 3,
),
'3' => Array
(
'category_id' => 4,
'category_name' => 'Flasks',
'parent_id' => 3,
'level' => 4,
),
'4' => Array
(
'category_id' => 5,
'category_name' => 'Clothing & Accessories',
'parent_id' => 0,
'level' => 1,
),
'5' => Array
(
'category_id' => 6,
'category_name' => 'Clothing',
'parent_id' => 5,
'level' => 2,
),
'6' => Array
(
'category_id' => 7,
'category_name' => 'Shorts',
'parent_id' => 6,
'level' => 3,
),
'7' => Array
(
'category_id' => 8,
'category_name' => 'Shirts & Tops',
'parent_id' => 6,
'level' => 3,
),
'8' => Array
(
'category_id' => 9,
'category_name' => 'Jumpers & Cardigans',
'parent_id' => 8,
'level' => 4,
),
'9' => Array
(
'category_id' => 10,
'category_name' => 'T-Shirts',
'parent_id' => 8,
'level' => 4,
),
'10' => Array
(
'category_id' => 11,
'category_name' => 'Skirts',
'parent_id' => 6,
'level' => 3,
),
'11' => Array
(
'category_id' => 12,
'category_name' => 'Shirts & Blouses',
'parent_id' => 8,
'level' => 4,
),
'12' => Array
(
'category_id' => 13,
'category_name' => 'Trousers & Jeans',
'parent_id' => 6,
'level' => 3,
),
'13' => Array
(
'category_id' => 14,
'category_name' => 'Chinos',
'parent_id' => 13,
'level' => 4,
),
'14' => Array
(
'category_id' => 15,
'category_name' => 'Tops',
'parent_id' => 6,
'level' => 3,
),
'15' => Array
(
'category_id' => 16,
'category_name' => 'Sweatshirts',
'parent_id' => 8,
'level' => 4,
),
'16' => Array
(
'category_id' => 17,
'category_name' => 'Clothing Accessories',
'parent_id' => 5,
'level' => 2,
),
'17' => Array
(
'category_id' => 18,
'category_name' => 'Hats',
'parent_id' => 17,
'level' => 3,
),
'18' => Array
(
'category_id' => 19,
'category_name' => 'Shirts',
'parent_id' => 15,
'level' => 4,
),
'19' => Array
(
'category_id' => 20,
'category_name' => 'Cargo Trousers',
'parent_id' => 13,
'level' => 4,
),
'20' => Array
(
'category_id' => 21,
'category_name' => 'Underwear & Socks',
'parent_id' => 6,
'level' => 3,
),
'21' => Array
(
'category_id' => 22,
'category_name' => 'Socks',
'parent_id' => 21,
'level' => 4,
),
'22' => Array
(
'category_id' => 23,
'category_name' => 'Polo Shirts',
'parent_id' => 8,
'level' => 4,
),
'23' => Array
(
'category_id' => 24,
'category_name' => 'Apparel & Accessories',
'parent_id' => 0,
'level' => 1,
),
'24' => Array
(
'category_id' => 25,
'category_name' => 'Clothing Accessories',
'parent_id' => 24,
'level' => 2,
),
'25' => Array
(
'category_id' => 26,
'category_name' => 'Belts',
'parent_id' => 25,
'level' => 3,
),
'26' => Array
(
'category_id' => 27,
'category_name' => 'Gloves & Mittens',
'parent_id' => 17,
'level' => 3,
),
'27' => Array
(
'category_id' => 28,
'category_name' => 'Gloves',
'parent_id' => 27,
'level' => 4,
),
'28' => Array
(
'category_id' => 29,
'category_name' => 'Shoes',
'parent_id' => 24,
'level' => 2,
),
'29' => Array
(
'category_id' => 30,
'category_name' => 'Sandals',
'parent_id' => 29,
'level' => 3,
),
'30' => Array
(
'category_id' => 31,
'category_name' => 'Thongs & Flip-Flops',
'parent_id' => 30,
'level' => 4,
),
'31' => Array
(
'category_id' => 32,
'category_name' => 'Luggage & Bags',
'parent_id' => 0,
'level' => 1,
),
'32' => Array
(
'category_id' => 33,
'category_name' => 'Messenger Bags',
'parent_id' => 32,
'level' => 2,
),
'33' => Array
(
'category_id' => 34,
'category_name' => 'Jeans',
'parent_id' => 13,
'level' => 4,
),
'34' => Array
(
'category_id' => 35,
'category_name' => 'Clothing',
'parent_id' => 24,
'level' => 2,
),
'35' => Array
(
'category_id' => 36,
'category_name' => 'Pants',
'parent_id' => 35,
'level' => 3,
),
'36' => Array
(
'category_id' => 37,
'category_name' => 'Jeans',
'parent_id' => 36,
'level' => 4,
),
'37' => Array
(
'category_id' => 38,
'category_name' => 'Handbags, Wallets & Cases',
'parent_id' => 5,
'level' => 2,
),
'38' => Array
(
'category_id' => 39,
'category_name' => 'Wallets & Money Clips',
'parent_id' => 38,
'level' => 3,
),
'39' => Array
(
'category_id' => 40,
'category_name' => 'Baseball Hats',
'parent_id' => 18,
'level' => 4,
),
'40' => Array
(
'category_id' => 41,
'category_name' => 'Handbag & Wallet Accessories',
'parent_id' => 5,
'level' => 2,
),
'41' => Array
(
'category_id' => 42,
'category_name' => 'Key Chains',
'parent_id' => 41,
'level' => 3,
),
'42' => Array
(
'category_id' => 43,
'category_name' => 'Shoes',
'parent_id' => 5,
'level' => 2,
),
'43' => Array
(
'category_id' => 44,
'category_name' => 'Boots',
'parent_id' => 43,
'level' => 3,
),
'44' => Array
(
'category_id' => 45,
'category_name' => 'Waterproof Boots & Wellingtons',
'parent_id' => 44,
'level' => 4,
),
'45' => Array
(
'category_id' => 46,
'category_name' => 'Barware',
'parent_id' => 2,
'level' => 3,
),
'46' => Array
(
'category_id' => 47,
'category_name' => 'Drink Shakers & Tools',
'parent_id' => 46,
'level' => 4,
),
'47' => Array
(
'category_id' => 48,
'category_name' => 'Bottle Openers',
'parent_id' => 47,
'level' => 5,
),
'48' => Array
(
'category_id' => 49,
'category_name' => 'Tableware',
'parent_id' => 2,
'level' => 3,
),
'49' => Array
(
'category_id' => 50,
'category_name' => 'Drinkware',
'parent_id' => 49,
'level' => 4,
),
'50' => Array
(
'category_id' => 51,
'category_name' => 'Mugs',
'parent_id' => 50,
'level' => 5,
),
'51' => Array
(
'category_id' => 52,
'category_name' => 'Outerwear',
'parent_id' => 6,
'level' => 3,
),
'52' => Array
(
'category_id' => 53,
'category_name' => 'Coats & Jackets',
'parent_id' => 52,
'level' => 4,
),
'53' => Array
(
'category_id' => 54,
'category_name' => 'Puffer jackets',
'parent_id' => 53,
'level' => 5,
),
'54' => Array
(
'category_id' => 55,
'category_name' => 'Shirts & Tops',
'parent_id' => 35,
'level' => 3,
),
'55' => Array
(
'category_id' => 56,
'category_name' => 'T-Shirts',
'parent_id' => 55,
'level' => 4,
),
'56' => Array
(
'category_id' => 57,
'category_name' => 'T-Shirts',
'parent_id' => 15,
'level' => 4,
),
'57' => Array
(
'category_id' => 58,
'category_name' => 'Sandals',
'parent_id' => 43,
'level' => 3,
),
'58' => Array
(
'category_id' => 59,
'category_name' => 'Thongs & Flip Flops',
'parent_id' => 58,
'level' => 4,
),
'59' => Array
(
'category_id' => 60,
'category_name' => 'Belts',
'parent_id' => 17,
'level' => 3,
),
'60' => Array
(
'category_id' => 61,
'category_name' => 'Cargo Shorts',
'parent_id' => 7,
'level' => 4,
),
'61' => Array
(
'category_id' => 62,
'category_name' => 'Jumpers & Cardigans',
'parent_id' => 15,
'level' => 4,
),
'62' => Array
(
'category_id' => 63,
'category_name' => 'Cosmetic & Toiletry Bags',
'parent_id' => 32,
'level' => 2,
),
'63' => Array
(
'category_id' => 64,
'category_name' => 'Activewear',
'parent_id' => 35,
'level' => 3,
),
'64' => Array
(
'category_id' => 65,
'category_name' => 'Sweatshirts',
'parent_id' => 64,
'level' => 4,
),
'65' => Array
(
'category_id' => 66,
'category_name' => 'Sun Hats',
'parent_id' => 18,
'level' => 4,
),
'66' => Array
(
'category_id' => 67,
'category_name' => 'Fleece Jackets',
'parent_id' => 53,
'level' => 5,
),
'67' => Array
(
'category_id' => 68,
'category_name' => 'Gilets',
'parent_id' => 52,
'level' => 4,
),
'68' => Array
(
'category_id' => 69,
'category_name' => 'Handbags',
'parent_id' => 38,
'level' => 3,
),
'69' => Array
(
'category_id' => 70,
'category_name' => 'Tote Bags & Shoppers',
'parent_id' => 69,
'level' => 4,
),
'70' => Array
(
'category_id' => 71,
'category_name' => 'Outdoor Shoes',
'parent_id' => 29,
'level' => 3,
),
'71' => Array
(
'category_id' => 72,
'category_name' => 'Water Shoes',
'parent_id' => 71,
'level' => 4,
),
'72' => Array
(
'category_id' => 73,
'category_name' => 'Backpacks',
'parent_id' => 32,
'level' => 2,
),
'73' => Array
(
'category_id' => 74,
'category_name' => 'Shirts & Blouses',
'parent_id' => 55,
'level' => 4,
),
'74' => Array
(
'category_id' => 75,
'category_name' => 'Scarves & Snoods',
'parent_id' => 17,
'level' => 3,
),
'75' => Array
(
'category_id' => 76,
'category_name' => 'Suitcases',
'parent_id' => 32,
'level' => 2,
),
'76' => Array
(
'category_id' => 77,
'category_name' => 'Hand Luggage',
'parent_id' => 76,
'level' => 3,
),
'77' => Array
(
'category_id' => 78,
'category_name' => 'Vests & Tank Tops',
'parent_id' => 8,
'level' => 4,
),
'78' => Array
(
'category_id' => 79,
'category_name' => 'Parasols & Umbrellas',
'parent_id' => 1,
'level' => 2,
),
'79' => Array
(
'category_id' => 80,
'category_name' => 'Carry-On Luggage',
'parent_id' => 76,
'level' => 3,
),
'80' => Array
(
'category_id' => 81,
'category_name' => 'Dresses',
'parent_id' => 6,
'level' => 3,
),
'81' => Array
(
'category_id' => 82,
'category_name' => 'Day Dresses',
'parent_id' => 81,
'level' => 4,
),
'82' => Array
(
'category_id' => 83,
'category_name' => 'Cargo Pants',
'parent_id' => 13,
'level' => 4,
),
'83' => Array
(
'category_id' => 84,
'category_name' => 'Hand Luggage',
'parent_id' => 32,
'level' => 2,
),
'84' => Array
(
'category_id' => 85,
'category_name' => 'Shoulder Bags',
'parent_id' => 69,
'level' => 4,
),
'85' => Array
(
'category_id' => 86,
'category_name' => 'Bermuda Shorts',
'parent_id' => 7,
'level' => 4,
),
'86' => Array
(
'category_id' => 87,
'category_name' => 'Shorts',
'parent_id' => 35,
'level' => 3,
),
'87' => Array
(
'category_id' => 88,
'category_name' => 'Cargo Shorts',
'parent_id' => 87,
'level' => 4,
),
'88' => Array
(
'category_id' => 89,
'category_name' => 'Trousers',
'parent_id' => 6,
'level' => 3,
),
'89' => Array
(
'category_id' => 90,
'category_name' => 'Casual Trousers',
'parent_id' => 89,
'level' => 4,
),
'90' => Array
(
'category_id' => 91,
'category_name' => 'Handbag & Wallet Accessories',
'parent_id' => 24,
'level' => 2,
),
'91' => Array
(
'category_id' => 92,
'category_name' => 'Lanyards',
'parent_id' => 91,
'level' => 3,
),
'92' => Array
(
'category_id' => 93,
'category_name' => 'Duffel Bags',
'parent_id' => 32,
'level' => 2,
),
'93' => Array
(
'category_id' => 94,
'category_name' => 'Polo Shirts',
'parent_id' => 15,
'level' => 4,
),
'94' => Array
(
'category_id' => 95,
'category_name' => 'Skorts',
'parent_id' => 6,
'level' => 3,
),
'95' => Array
(
'category_id' => 96,
'category_name' => 'Casual Jackets',
'parent_id' => 53,
'level' => 5,
),
'96' => Array
(
'category_id' => 97,
'category_name' => 'Leggings',
'parent_id' => 89,
'level' => 4,
),
'97' => Array
(
'category_id' => 98,
'category_name' => 'Canteens',
'parent_id' => 3,
'level' => 4,
),
'98' => Array
(
'category_id' => 99,
'category_name' => 'Caps',
'parent_id' => 18,
'level' => 4,
),
'99' => Array
(
'category_id' => 100,
'category_name' => 'Baseball Hats',
'parent_id' => 99,
'level' => 5,
),
'100' => Array
(
'category_id' => 101,
'category_name' => 'Rain Gear',
'parent_id' => 52,
'level' => 4,
),
'101' => Array
(
'category_id' => 102,
'category_name' => 'Waterproof Coats',
'parent_id' => 101,
'level' => 5,
),
'102' => Array
(
'category_id' => 103,
'category_name' => 'Capes & Ponchos',
'parent_id' => 53,
'level' => 5,
),
'103' => Array
(
'category_id' => 104,
'category_name' => 'Sweatshirts',
'parent_id' => 15,
'level' => 4,
),
'104' => Array
(
'category_id' => 105,
'category_name' => 'Outdoor Shoes',
'parent_id' => 43,
'level' => 3,
),
'105' => Array
(
'category_id' => 106,
'category_name' => 'Water Shoes',
'parent_id' => 105,
'level' => 4,
),
'106' => Array
(
'category_id' => 107,
'category_name' => 'Polo Shirts',
'parent_id' => 55,
'level' => 4,
),
'107' => Array
(
'category_id' => 108,
'category_name' => 'Dresses',
'parent_id' => 35,
'level' => 3,
),
'108' => Array
(
'category_id' => 109,
'category_name' => 'Day Dresses',
'parent_id' => 108,
'level' => 4,
),
'109' => Array
(
'category_id' => 110,
'category_name' => 'Sweaters & Cardigans',
'parent_id' => 55,
'level' => 4,
),
'110' => Array
(
'category_id' => 111,
'category_name' => 'Shopping Totes',
'parent_id' => 32,
'level' => 2,
),
'111' => Array
(
'category_id' => 112,
'category_name' => 'Sweatshirts',
'parent_id' => 55,
'level' => 4,
),
'112' => Array
(
'category_id' => 113,
'category_name' => 'Scarves & Shawls',
'parent_id' => 25,
'level' => 3,
),
'113' => Array
(
'category_id' => 114,
'category_name' => 'Handbags, Wallets & Cases',
'parent_id' => 24,
'level' => 2,
),
'114' => Array
(
'category_id' => 115,
'category_name' => 'Handbags',
'parent_id' => 114,
'level' => 3,
),
'115' => Array
(
'category_id' => 116,
'category_name' => 'Tote Handbags',
'parent_id' => 115,
'level' => 4,
),
'116' => Array
(
'category_id' => 117,
'category_name' => 'Underwear & Socks',
'parent_id' => 35,
'level' => 3,
),
'117' => Array
(
'category_id' => 118,
'category_name' => 'Socks',
'parent_id' => 117,
'level' => 4,
),
'118' => Array
(
'category_id' => 119,
'category_name' => 'Cross-Body Handbags',
'parent_id' => 115,
'level' => 4,
),
'119' => Array
(
'category_id' => 120,
'category_name' => 'Underwear',
'parent_id' => 117,
'level' => 4,
),
);
code
function categoriesCmd($a, $b)
{
return strnatcmp($a['path'], $b['path']);
}
//
// sort all categories values by path. Path - it is category parent ids:
// 1
// 1/2
// 1/2/3
// 1/2/3/4
// 1/2/3/98
// 1/2/46
// 1/2/46/47
// 1/2/46/47/48
// 1/2/49
// etc
//
$maxLevel = 0;
$categories = array();
foreach ($categoriesrRaw as $key => $category) {
$parentId = $category['parent_id'];
$category['path'] = array($category['category_id']);
if ($maxLevel < $category['level']) {
$maxLevel = $category['level'];
}
while ($parentId) {
foreach ($categoriesrRaw as $item) {
if ($item['category_id'] == $parentId) {
$newParentId = $item['parent_id'];
$category['path'][] = $item['category_id'];
break;
}
}
$parentId = $newParentId;
// $category['level']++;
}
$category['path'] = implode('/', array_reverse($category['path']));
$categories[] = $category;
}
usort($categories, 'categoriesCmd');
//
// create needed array structure
//
$prev = array_shift($categories);
$level = 0;
$result = array(array_fill(0, $maxLevel, ""));
$result[0][0] = $category['category_name'];
foreach ($categories as $category) {
if ($prev['level'] >= $category['level']) {
$level++;
$result[$level] = array_fill(0, $maxLevel, "");
}
$result[$level][$category['level']-1] = $category['category_name'];
$prev = $category;
}
print_r($result);
Pointless Dribble
Okay This is another weird one from me, i want to thank OIS for helping me out on my last question... which deals with this same kind of funky array manipulation... i studied that code in depth and i feel it has helped me become better with recursive array manipulative functions. However, once again i find my self in another tough spot
Actual Problem
I am trying to write a recursive manipulative function such as this. Except for getting the depth of each array element. It will add incremental count to each array element with a certain depth. The easiest way to see what I'm trying to do is to view the "sample array" and "Desired result Array"... i feel like I'm getting better at understanding these kind of recursive functions. but this one is giving me hell, thanks in advance for any kind of help you can give me with this.
Please disregard the [depth] result of the sample array i already have a function that adds this.
Thanks again,
-- YouDontMeanMuch
Sample Array
array (
52 =>
array (
'title' => 'Website Navigation',
'path' => '',
'type' => '115',
'pid' => 0,
'hasChildren' => 1,
'children' =>
array (
53 =>
array (
'title' => 'Home',
'path' => '',
'type' => '118',
'pid' => 52,
'hasChildren' => 0,
),
54 =>
array (
'title' => 'Features',
'path' => 'features',
'type' => '374',
'pid' => 52,
'hasChildren' => 1,
'children' =>
array (
59 =>
array (
'title' => 'artistic',
'path' => 'features/artistic',
'type' => '374',
'pid' => 54,
'hasChildren' => 1,
'children' =>
array (
63 =>
array (
'title' => 'galleries',
'path' => 'features/artistic/galleries',
'type' => '374',
'pid' => 59,
'hasChildren' => 1,
'children' =>
array (
65 =>
array (
'title' => 'graphics',
'path' => 'features/artistic/galleries/graphics',
'type' => '118',
'pid' => 63,
'hasChildren' => 0,
),
67 =>
array (
'title' => 'mixed medium',
'path' => 'features/artistic/galleries/mixed-medium',
'type' => '118',
'pid' => 63,
'hasChildren' => 0,
),
64 =>
array (
'title' => 'overview',
'path' => 'features/artistic/galleries',
'type' => '118',
'pid' => 63,
'hasChildren' => 0,
),
68 =>
array (
'title' => 'photography',
'path' => 'features/artistic/galleries/photography',
'type' => '118',
'pid' => 63,
'hasChildren' => 0,
),
66 =>
array (
'title' => 'traditional',
'path' => 'features/artistic/galleries/traditional',
'type' => '118',
'pid' => 63,
'hasChildren' => 0,
),
),
),
62 =>
array (
'title' => 'overview',
'path' => 'features/artistic',
'type' => '118',
'pid' => 59,
'hasChildren' => 0,
),
69 =>
array (
'title' => 'tutorials',
'path' => 'features/artistic/tutorials',
'type' => '374',
'pid' => 59,
'hasChildren' => 1,
'children' =>
array (
71 =>
array (
'title' => 'by category',
'path' => 'features/artistic/tutorials/by-category/',
'type' => '118',
'pid' => 69,
'hasChildren' => 0,
),
72 =>
array (
'title' => 'by date',
'path' => 'features/artistic/tutorials/by-date/',
'type' => '118',
'pid' => 69,
'hasChildren' => 0,
),
70 =>
array (
'title' => 'overview',
'path' => 'features/artistic/tutorials',
'type' => '118',
'pid' => 69,
'hasChildren' => 0,
),
),
),
),
),
58 =>
array (
'title' => 'overview',
'path' => 'features',
'type' => '118',
'pid' => 54,
'hasChildren' => 0,
),
61 =>
array (
'title' => 'projects / labs',
'path' => 'features/projects-labs/',
'type' => '374',
'pid' => 54,
'hasChildren' => 0,
),
60 =>
array (
'title' => 'web development',
'path' => 'features/web-development',
'type' => '374',
'pid' => 54,
'hasChildren' => 1,
'children' =>
array (
74 =>
array (
'title' => 'articles',
'path' => 'features/web-development/articles/',
'type' => '374',
'pid' => 60,
'hasChildren' => 0,
),
73 =>
array (
'title' => 'overview',
'path' => 'features/web-development',
'type' => '118',
'pid' => 60,
'hasChildren' => 0,
),
75 =>
array (
'title' => 'tutorials',
'path' => 'features/web-development/tutorials',
'type' => '374',
'pid' => 60,
'hasChildren' => 0,
),
),
),
),
),
55 =>
array (
'title' => 'Activity',
'path' => 'activity',
'type' => '374',
'pid' => 52,
'hasChildren' => 0,
),
56 =>
array (
'title' => 'Blog',
'path' => 'blog',
'type' => '374',
'pid' => 52,
'hasChildren' => 0,
),
57 =>
array (
'title' => 'About',
'path' => 'about',
'type' => '374',
'pid' => 52,
'hasChildren' => 1,
'children' =>
array (
76 =>
array (
'title' => 'the author',
'path' => 'about/the-author',
'type' => '118',
'pid' => 57,
'hasChildren' => 0,
),
77 =>
array (
'title' => 'the website',
'path' => 'about/the-website',
'type' => '118',
'pid' => 57,
'hasChildren' => 0,
),
),
),
),
),
)
Desired result Array Notice the [count] index
Array
(
[53] => Array
(
[title] => Home
[path] =>
[type] => 118
[pid] => 52
[mid] => 53
[hasChildren] => 0
[depth] => 1
[count] => 1
)
[54] => Array
(
[title] => Features
[path] => features
[type] => 374
[pid] => 52
[mid] => 54
[hasChildren] => 1
[depth] => 1
[count] => 2
[children] => Array
(
[59] => Array
(
[title] => artistic
[path] => features/artistic
[type] => 374
[pid] => 54
[mid] => 59
[hasChildren] => 1
[depth] => 2
[count] => 1
[children] => Array
(
[63] => Array
(
[title] => galleries
[path] => features/artistic/galleries
[type] => 374
[pid] => 59
[mid] => 63
[hasChildren] => 1
[depth] => 3
[count] => 1
[children] => Array
(
[65] => Array
(
[title] => graphics
[path] => features/artistic/galleries/graphics
[type] => 118
[pid] => 63
[mid] => 65
[hasChildren] => 0
[depth] => 4
[count] => 1
)
[67] => Array
(
[title] => mixed medium
[path] => features/artistic/galleries/mixed-medium
[type] => 118
[pid] => 63
[mid] => 67
[hasChildren] => 0
[depth] => 4
[count] => 2
)
[64] => Array
(
[title] => overview
[path] => features/artistic/galleries
[type] => 118
[pid] => 63
[mid] => 64
[hasChildren] => 0
[depth] => 4
[count] => 3
)
[68] => Array
(
[title] => photography
[path] => features/artistic/galleries/photography
[type] => 118
[pid] => 63
[mid] => 68
[hasChildren] => 0
[depth] => 4
[count] => 4
)
[66] => Array
(
[title] => traditional
[path] => features/artistic/galleries/traditional
[type] => 118
[pid] => 63
[mid] => 66
[hasChildren] => 0
[depth] => 4
[count] => 5
)
)
)
[62] => Array
(
[title] => overview
[path] => features/artistic
[type] => 118
[pid] => 59
[mid] => 62
[hasChildren] => 0
[depth] => 3
[count] => 2
)
[69] => Array
(
[title] => tutorials
[path] => features/artistic/tutorials
[type] => 374
[pid] => 59
[mid] => 69
[hasChildren] => 1
[depth] => 3
[count] => 3
[children] => Array
(
[71] => Array
(
[title] => by category
[path] => features/artistic/tutorials/by-category/
[type] => 118
[pid] => 69
[mid] => 71
[hasChildren] => 0
[depth] => 4
[count] => 1
)
[72] => Array
(
[title] => by date
[path] => features/artistic/tutorials/by-date/
[type] => 118
[pid] => 69
[mid] => 72
[hasChildren] => 0
[depth] => 4
[count] => 2
)
[70] => Array
(
[title] => overview
[path] => features/artistic/tutorials
[type] => 118
[pid] => 69
[mid] => 70
[hasChildren] => 0
[depth] => 4
[count] => 3
)
)
)
)
)
[58] => Array
(
[title] => overview
[path] => features
[type] => 118
[pid] => 54
[mid] => 58
[hasChildren] => 0
[depth] => 2
[count] => 2
)
[61] => Array
(
[title] => projects / labs
[path] => features/projects-labs/
[type] => 374
[pid] => 54
[mid] => 61
[hasChildren] => 0
[depth] => 2
[count] => 3
)
[60] => Array
(
[title] => web development
[path] => features/web-development
[type] => 374
[pid] => 54
[mid] => 60
[hasChildren] => 1
[depth] => 2
[count] => 4
[children] => Array
(
[74] => Array
(
[title] => articles
[path] => features/web-development/articles/
[type] => 374
[pid] => 60
[mid] => 74
[hasChildren] => 0
[depth] => 3
[count] => 1
)
[73] => Array
(
[title] => overview
[path] => features/web-development
[type] => 118
[pid] => 60
[mid] => 73
[hasChildren] => 0
[depth] => 3
[count] => 2
)
[75] => Array
(
[title] => tutorials
[path] => features/web-development/tutorials
[type] => 374
[pid] => 60
[mid] => 75
[hasChildren] => 0
[depth] => 3
[count] => 3
)
I think this should work... I wasn't able to test on your example array but it seems to work on a smaller array I made.
Edit: Changed the function now that you've removed the 'depth' keys from your example array. Now it finds the depth on its own. I've also added my test code and output:
<?php
function array_depth_count(&$array, $count=array(), $depth=1) {
foreach ($array as &$value) {
if (is_array($value)) {
$value['count'] = ++$count[$depth];
array_depth_count($value, $count, $depth + 1);
}
}
}
$a = array(array(array(array(0),array(0),array(),array()),0,array()));
echo "Before\n";
print_r($a);
array_depth_count($a);
echo "\n\nAfter\n";
print_r($a);
?>
Output:
Before
Array
(
[0] => Array
(
[0] => Array
(
[0] => Array
(
[0] => 0
)
[1] => Array
(
[0] => 0
)
[2] => Array
(
)
[3] => Array
(
)
)
[1] => 0
[2] => Array
(
)
)
)
After
Array
(
[0] => Array
(
[0] => Array
(
[0] => Array
(
[0] => 0
[count] => 1
)
[1] => Array
(
[0] => 0
[count] => 2
)
[2] => Array
(
[count] => 3
)
[3] => Array
(
[count] => 4
)
[count] => 1
)
[1] => 0
[2] => Array
(
[count] => 2
)
[count] => 1
)
)
I really want to say this will work
function deep(&$layer)
{
$count = 1;
$keys = array_keys($layer);
foreach($keys as $key)
if(is_array($layer[$key]))
deep($layer[$key]);
$layer['depth'] = $count++;
}
(Tested and works fine for me)
(Another case of me misunderstanding the question. This should be what you want)