0

私はこれに週末全体を費やしてきましたが、解決できないようです。

私の html は 2 つのドロップダウン メニューで構成されています。1 つは特定のタイプを決定し、2 番目はコンポーネントを決定します。

使用されるタイプに基づいて、各コンポーネントに関連付けられた定義済みのコストがあります。

ここに私のHTML:

 <td><select name="type">
<option value= "0" selected>None</option>
<option value = "CAR">Car</option>
<option value = "VAN">Van</option>
<option value = "TRK">Truck</option>
</select></td>

<td>Component:</td>
<td><select name="component">
<option value= "0" selected>None</option>
<option value = "TIR">Oil</option>
<option value = "OIL">Tire</option>
<option value = "SPK">Spark Plug</option>
</select></td>

私のphpは次のようになります:

$cat = array(
'CAR_TIR' => array('comp' => 'Tires','price' => 100),
'CAR_OIL' => array('comp' => 'Oil', 'price' => 10),
'CAR_SPK' => array('comp' => 'Spark Plug', 'price' => 4),

'VAN_TIR' => array('comp' => 'Tires','price' => 120),
 'VAN_OIL' => array('comp' => 'Oil', 'price' =>12),
      'VAN_SPK' => array('comp' => 'Spark Plug', 'price' =>5),

'TRK_TIR' => array('comp' => 'Tires','price' => 150),
'TRK_OIL' => array('comp' => 'OIL','price' => 15),
'TRK_SPK' => array('comp' => 'Tires','price' => 6),

);
echo $cat[$_POST['type'].'_'.$_POST['component']]['price']; 
?>

そして、私が得ている出力は次のようになります: Price checkup? array('comp' => 'Tires','price' => 100), 'CAR_OIL' => array('comp' => 'Oil', 'price' => 10), 'CAR_SPK' => array( 'comp' => 'Spark Plug', 'price' => 4), 'VAN_TIR' => array('comp' => 'Tires','price' => 120), 'VAN_OIL' => array(' comp' => 'Oil', 'price' =>12), 'VAN_SPK' => array('comp' => 'Spark Plug', 'price' =>5), 'TRK_TIR' => array('comp' ' => 'Tires','price' => 150), 'TRK_OIL' => array('comp' => 'OIL','price' => 15), 'TRK_SPK' => array('comp' = > 'タイヤ','価格' => 6), ); echo $cat[$ POST['type'].' '.$_POST['コンポーネント']]['価格']; ?>

文字通りそれが出力です。私に何ができるか教えてください。ありがとう!

4

3 に答える 3

0

三次元配列は必要ですか?私には非常に面倒で読みにくい方法のように思えます。可能であれば、3つの配列の方が読みやすいと思いますか?

ドロップダウンを表示する 3 つの個別の配列を記述し (ループforeachの代わりに試してforください)、送信された後にそれぞれの値を使用して価格を計算します。

これが探しているものではない場合は、質問をもう少し明確にする必要があります。:)

于 2013-02-19T01:42:23.930 に答える
0

数値ではなく、ネストされた連想配列を使用する必要があります。連想配列は、その要素が数値ではなく文字列によって参照される配列です。これにより、各要素の参照がはるかに簡単になります。

あなたの場合、次のようなものを使用する必要があります。

$categories = array( 
    'car' => array( 'oil' => 10, 'spark' => 10 ),
    'van' => array( 'oil' => 12, 'spark' => 12 ),
    'truck' => array( 'oil'=> 15, 'spark' => 15 )
);

フォームから選択したアイテムを取得するには、次のようにします。

$type = $_POST['type'];
$component = $_POST['component'];
// Error check $type and $component
$selected = $categories[$type][$component];

optionhtml値を整数から配列キーに一致する文字列に変更することを忘れないでください。また、for ループをforeach ループに変更する必要があります。

于 2013-02-19T01:47:44.867 に答える
0

2次元と連想配列で行ってみませんか。これは読みやすいと思います。

<td>Car type:</td>
<td><select name="type">
    <option value= "0" selected>None</option>
    <option value = "CAR">Car</option>
    <option value = "VAN">Van</option>
    <option value = "TRK">Truck</option>
</select></td>

<td>Component:</td>
<td><select name="component">
    <option value= "0" selected>None</option>
    <option value = "TIR">Oil</option>
    <option value = "OIL">Tire</option>
    <option value = "SPK">Spark Plug</option>
</select></td>

$cat = array(
    'CAR_TIR' => array('comp' => 'Tires','price' => 100),
    'CAR_OIL' => array('comp' => 'Oil', 'price' => 10),
    'CAR_SPK' => array('comp' => 'Spark Plug', 'price' => 4),
    'VAN_TIR' => array('comp' => 'Tires','price' => 200),
    'TRK_TIR' => array('comp' => 'Tires','price' => 300)
    ); // fill in the missing values for VAN and TRK

参照:

echo $cat['CAR_TIR']['comp']; // output: Tires
echo $cat['CAR_TIR']['price']; // output: 100
echo $cat['TRK_TIR']['price']; // output: 300

typeフォームからの入力による参照 (とが設定されていると仮定component):

echo $cat[$_POST['type'].'_'.$_POST['component']]['price']; 
// type='CAR', component='OIL', Output: 10

ループ:

foreach ($cat as $key => $value) {
    echo 'Code: '.$key.', component: '.$value['comp'].', price:'.$value['price'];
}
于 2013-02-19T02:03:23.030 に答える