-2

多くの入力を含むフォームがありますが、ここで関心のある 2 つは名前が付けられattributes[]ておりoptions[$index][]、入力のサンプル データはattributes[]次のようになります。

Array
(
    [0] => Size
    [1] => Color
    [2] => Material
)

Note: The above is the $_POST data visualized as PHP array
Below is what the HTML form would look like:

<input name="attributes[]" value="Size">
<input name="attributes[]" value="Color">
<input name="attributes[]" value="Material">

からのデータはoptions[$index][]次のようになります。

Array
(
    [1] => Array
        (
            [0] => Small
            [1] => Medium
            [2] => Large
            [3] => 
        )

    [2] => Array
        (
            [0] => Red
            [1] => Blue
            [2] => Green
            [3] => 
        )

    [3] => Array
        (
            [0] => Cotton
            [1] => Wool
            [2] => 
        )

)

Note: The above is the $_POST data visualized as PHP array
Below is what the HTML form would look like:

<input name="options[1][]" value="Small">
<input name="options[1][]" value="Medium">
<input name="options[1][]" value="Large">

<input name="options[2][]" value="Red">
<input name="options[2][]" value="Blue">
<input name="options[2][]" value="Green">

<input name="options[3][]" value="Cotton">
<input name="options[3][]" value="Wool">

attributes[]( からのインデックス値が の対応する配列のインデックス値と一致しない場合があることに注意してくださいoptions[$index][])

空でない要素ごとに1つattributes[]の列と、利用可能なオプションの組み合わせごとに1つの行を持つテーブルを動的に作成しようとしているため、上記のテーブルでは、サンプルテーブルは次のようになります。

+-------+-------+----------+-----+
| Size  | Color | Material | SKU |
+-------+-------+----------+-----+
| Small | Red   | Cotton   | 100 |
| Small | Red   | Wool     | 101 |
| Small | Blue  | Cotton   | 102 |
| Small | Blue  | Wool     | 103 |
| Small | Green | Cotton   | 104 |
| ...   | ...   | ...      | ... |

組み合わせで配列の配列を出力する配列のデカルト積を計算する関数が既にあります(参照:https://stackoverflow.com/a/12305169/104381​​7

CartProd()入力からすべての値を取得して配列に変換し、それらを関数にフィードする方法がよくわかりません。この時点での私の主な関心事はoption[$index][]入力です。

上記のサンプルデータから、これは私が生成したいものです:[small, medium, large] [Red, Blue, Green] [Cotton, Wool]

4

1 に答える 1