0
我已經查找了很多類似於此的線程,但主要區別在於,在這些線程中,「children」元素只有1每個值。我的問題稍有不同:「拼合」多維數組由「組合」兒童(即:7 x 7 = 49)
你有一個2級的數組,第一級是「選項類型」(即:顏色,大小,結構等),第二級是「選項值」(即:紅色,藍色,6號,7號,皮革,棉花等)。我想將這個陣列「扁平化」成一個單一的水平陣列,它結合了選項(即:紅色 - 尺寸6-皮革,紅色 - 尺碼6-棉布,藍色 - 尺碼6-皮革等)。
因此,如果有兩個選項類型和7個選項,結果數組將有49個鍵,如果有3個選項類型和5個選項,則結果數組將有125個鍵。
實施例的數據集
Array
(
[0] => Array
(
[option_id] => 1
[option_name] => Color
[option_values] => Array
(
[0] => Array
(
[poa_id] => 24
[poa_name] => Black
[poa] => POA575628
[poa_price] => 0.0000
[small_image] => http://img2.banggood.com/thumb/other_items//upload/2015/09/SKU279024_3.jpg
[view_image] => http://img3.banggood.com/thumb/view//upload/2015/09/SKU279024_3.jpg
[large_image] => http://img3.banggood.com/thumb/large//upload/2015/09/SKU279024_3.jpg
[list_grid_image] => http://img1.banggood.com/thumb/list_grid//upload/2015/09/SKU279024_3.jpg
)
[1] => Array
(
[poa_id] => 41
[poa_name] => Brown
[poa] => POA575649
[poa_price] => 0.0000
[small_image] => http://img1.banggood.com/thumb/other_items//upload/2015/09/SKU279024_5.jpg
[view_image] => http://img2.banggood.com/thumb/view//upload/2015/09/SKU279024_5.jpg
[large_image] => http://img1.banggood.com/thumb/large//upload/2015/09/SKU279024_5.jpg
[list_grid_image] => http://img.banggood.com/thumb/list_grid//upload/2015/09/SKU279024_5.jpg
)
)
)
[1] => Array
(
[option_id] => 8
[option_name] => Size(US)
[option_values] => Array
(
[0] => Array
(
[poa_id] => 10384
[poa_name] => 6.5
[poa] => POA575643
[poa_price] => 0.0000
)
[1] => Array
(
[poa_id] => 90
[poa_name] => 7
[poa] => POA575644
[poa_price] => 0.0000
)
)
)
)
必需數據組(2×2 = 4數組鍵)
Array
(
[0] => Array
(
[0] => Array
(
[poa_id] => 24
[poa_name] => Black
[poa] => POA575628
[poa_price] => 0.0000
[small_image] => http://img2.banggood.com/thumb/other_items//upload/2015/09/SKU279024_3.jpg
[view_image] => http://img3.banggood.com/thumb/view//upload/2015/09/SKU279024_3.jpg
[large_image] => http://img3.banggood.com/thumb/large//upload/2015/09/SKU279024_3.jpg
[list_grid_image] => http://img1.banggood.com/thumb/list_grid//upload/2015/09/SKU279024_3.jpg
)
[1] => Array
(
[poa_id] => 10384
[poa_name] => 6.5
[poa] => POA575643
[poa_price] => 0.0000
)
)
[1] => Array
(
[0] => Array
(
[poa_id] => 24
[poa_name] => Black
[poa] => POA575628
[poa_price] => 0.0000
[small_image] => http://img2.banggood.com/thumb/other_items//upload/2015/09/SKU279024_3.jpg
[view_image] => http://img3.banggood.com/thumb/view//upload/2015/09/SKU279024_3.jpg
[large_image] => http://img3.banggood.com/thumb/large//upload/2015/09/SKU279024_3.jpg
[list_grid_image] => http://img1.banggood.com/thumb/list_grid//upload/2015/09/SKU279024_3.jpg
)
[1] => Array
(
[poa_id] => 90
[poa_name] => 7
[poa] => POA575644
[poa_price] => 0.0000
)
)
[2] => Array
(
[0] => Array
(
[poa_id] => 41
[poa_name] => Brown
[poa] => POA575649
[poa_price] => 0.0000
[small_image] => http://img1.banggood.com/thumb/other_items//upload/2015/09/SKU279024_5.jpg
[view_image] => http://img2.banggood.com/thumb/view//upload/2015/09/SKU279024_5.jpg
[large_image] => http://img1.banggood.com/thumb/large//upload/2015/09/SKU279024_5.jpg
[list_grid_image] => http://img.banggood.com/thumb/list_grid//upload/2015/09/SKU279024_5.jpg
)
[1] => Array
(
[poa_id] => 10384
[poa_name] => 6.5
[poa] => POA575643
[poa_price] => 0.0000
)
)
[3] => Array
(
[0] => Array
(
[poa_id] => 41
[poa_name] => Brown
[poa] => POA575649
[poa_price] => 0.0000
[small_image] => http://img1.banggood.com/thumb/other_items//upload/2015/09/SKU279024_5.jpg
[view_image] => http://img2.banggood.com/thumb/view//upload/2015/09/SKU279024_5.jpg
[large_image] => http://img1.banggood.com/thumb/large//upload/2015/09/SKU279024_5.jpg
[list_grid_image] => http://img.banggood.com/thumb/list_grid//upload/2015/09/SKU279024_5.jpg
)
[1] => Array
(
[poa_id] => 90
[poa_name] => 7
[poa] => POA575644
[poa_price] => 0.0000
)
)
)
@Bobot我試着實現這個作爲遞歸函數,我使用array_shift()分隔第一個「選項類型集」,然後用剩餘的選項集調用函數,直到沒有剩下的選項集,然後將分隔的選項集與返回的「兒童套裝」。但是,我一直無法找到一個解決方案,其中所有選項集的值都處於相同的「級別」,總是會有一些額外的不需要的子數組(由於遞歸)。我一直無法提出正確的算法來完成我所需要的。 – Magnanimity
@Bobot我目前的推理是用第一組選項創建一個數組,然後在第二個遞歸中「複製」每個第二選項的內容並添加第二個選項,然後重複所有選項集,然後刪除任何鍵其中count($ array [$ key])
Magnanimity