2017-02-20 3 views
0

私は以下のように同じ名前のドロップダウンオプションを2つ持っています。今ポスト多次元配列をドロップダウン

<form action="" method="post"> 
    <select name="freeoptions[]"> 
     <option value="[7][4]">Black</option> 
     <option value="[7][5]">Blue</option> 
     <option value="[7][3]">Red</option> 
    </select> 


    <select name="freeoptions[]"> 
     <option value="[9][11]">Small</option> 
     <option value="[9][15]">Large</option> 
     <option value="[9][13]">XL</option> 
    </select> 

    <input type="submit" name="submit" value="submit"> 
</form> 

私は、アレイ内のポストデータを取得し、フォームを掲示していますように、

Array 
(
    [freeoptions] => Array 
     (
      [0] => [7][4] 
      [1] => [9][11] 
     ) 
) 

しかし、私は

Array 
     (
      [freeoptions] => Array 
      (
       [0] => Array 
       (
         [id] => [7] 
         [value] => [4] 
       ) 
       [1] => Array 
       (
         [id] => [9] 
         [value] => [11] 
       ) 
      ) 
     ) 

のように、この配列の何かをしたい誰もが行うにはどのように私を助けてくださいこの。 ありがとう、

答えて

1

"value"属性の内容は、内容にかかわらずリテラル文字列として送信されるため、ボックスから値を配列として送信することはできません。

常に両方の値を同じ値属性に指定し、バックエンドで分割することができます。

HTMLでの例:

$data = []; 

// Loop all freeoptions params 
foreach ($_POST['freeoptions'] as $opt) { 
    // Split the value on or separator: ; 
    $items = explode(';', $opt); 

    if (count($items) != 2) { 
     // We didn't get two values, let's ignore it and jump to the next iteration 
     continue; 
    } 

    // Create our new structure 
    $data[] = [ 
     'id' => $items[0], // Before the ; 
     'value' => $items[1], // After the ; 
    ]; 
} 

$data -arrayは今、必要なデータ構造が含まれている必要があります。

<option value="7;4"></option> 

は、その後、あなたのバックエンドではこのような何かを行います。

あなたの代わりに-variable $_POSTを使用し続けたい場合は、単にforeachの後に元のデータを上書き:

$_POST['freeoptions'] = $data; 
+0

パーフェクト、おかげで表示したいです – Hardik

0

データベースからの結果を表示するか、手動で表示しますか?

+0

は手動 – Hardik

+0

これはコメントではなく、答え –