配列の配列が与えられます:
$items = array(
array(
'id' => '1',
'property_a' => 'a,b,c',
'property_b' => '1,2,3'
'property_c' => 'x,y'
),
array(
'id' => '2',
'property_a' => 'b,c,d',
'property_b' => '3,4,5',
'property_c' => 'x,y'
)
);
この配列の各項目は、コンマで区切られたすべての値ではなく一部の値で分割する必要があります。
$splitItemsBy = array('property_a', 'property_b');
結果は、定義された $splitItemsBy キー値の一意の組み合わせを持つ項目の配列になります。
望ましい結果:
[
['id' => '1', 'property_a' => 'a', 'property_b' => '1', 'property_c' => 'x,y']
['id' => '1', 'property_a' => 'b', 'property_b' => '1', 'property_c' => 'x,y']
['id' => '1', 'property_a' => 'c', 'property_b' => '1', 'property_c' => 'x,y']
['id' => '1', 'property_a' => 'a', 'property_b' => '2', 'property_c' => 'x,y']
['id' => '1', 'property_a' => 'a', 'property_b' => '3', 'property_c' => 'x,y']
['id' => '1', 'property_a' => 'b', 'property_b' => '2', 'property_c' => 'x,y']
['id' => '1', 'property_a' => 'b', 'property_b' => '3', 'property_c' => 'x,y']
['id' => '1', 'property_a' => 'c', 'property_b' => '2', 'property_c' => 'x,y']
['id' => '1', 'property_a' => 'c', 'property_b' => '3', 'property_c' => 'x,y']
['id' => '2', 'property_a' => 'b', 'property_b' => '3', 'property_c' => 'x,y']
['id' => '2', 'property_a' => 'c', 'property_b' => '3', 'property_c' => 'x,y']
['id' => '2', 'property_a' => 'd', 'property_b' => '3', 'property_c' => 'x,y']
['id' => '2', 'property_a' => 'b', 'property_b' => '4', 'property_c' => 'x,y']
['id' => '2', 'property_a' => 'b', 'property_b' => '5', 'property_c' => 'x,y']
['id' => '2', 'property_a' => 'c', 'property_b' => '4', 'property_c' => 'x,y']
['id' => '2', 'property_a' => 'c', 'property_b' => '5', 'property_c' => 'x,y']
['id' => '2', 'property_a' => 'd', 'property_b' => '4', 'property_c' => 'x,y']
['id' => '2', 'property_a' => 'd', 'property_b' => '5', 'property_c' => 'x,y']
]
PHPでこれを行うための効率的でエレガントな方法はありますか?
すべての提出物に事前に感謝します。SQLでそれを解決するためのボーナスポイント。行け!
編集:私がそれを解決した方法
あなたが実際に私の仕事をしていないことを示すために、これが私のアプローチです (複雑すぎると感じます)。
[...]