Php 两个下拉菜单由三维数组处理以确定价格

Php 两个下拉菜单由三维数组处理以确定价格,php,html,Php,Html,我花了整个周末在这个问题上,但似乎无法解决它 我的html由两个下拉菜单组成。一个确定特定类型,另一个确定组件 根据所使用的组件类型,每个组件都有预定义的相关成本 这里是我的HTML: <td><select name="type"> <option value= "0" selected>None</option> <option value = "CAR">Car</option> <option value =

我花了整个周末在这个问题上,但似乎无法解决它

我的html由两个下拉菜单组成。一个确定特定类型,另一个确定组件

根据所使用的组件类型,每个组件都有预定义的相关成本

这里是我的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>
我得到的结果如下: 价格检查? 数组('comp'=>'Tires','price'=>100),'CAR\u OIL'=>数组('comp'=>'OIL','price'=>10),'CAR\u SPK'=>数组('comp'=>'Spark Plug','price'=>4),'VAN\u TIR'=>数组('comp'=>'Tires','price'=>120),'VAN OIL'=>数组('comp'=>'OIL','price'=>12),'VAN SPK'=>数组('comp=>5),'SPK'=>('comp'=>'Tires','price'=>150),'TRK_OIL'=>array('comp'=>'OIL','price'=>15),'TRK_SPK'=>array('comp'=>'Tires','price'=>6),);echo$cat[$POST['type'].'.$\u POST['component'].['price'];?>


这就是输出。请让我知道我能做什么。谢谢

是否需要三维数组?对我来说,这似乎是一种非常混乱和难以理解的做事方式。如果可能的话,我认为三个数组更容易阅读

编写三个单独的数组来显示下拉列表(尝试使用
foreach
而不是
for
循环),然后在提交后使用每个数组的值来计算价格


如果这不是您想要的,那么您必须更好地澄清您的问题。:)

应该使用嵌套的关联数组而不是数字数组。关联数组是由字符串而不是数字引用其元素的数组。这将使引用每个元素更加容易

对于您的情况,您应该使用以下内容:

$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];

不要忘记将html
选项的值从整数更改为与数组键匹配的字符串。您还需要将for循环更改为

为什么不按二维和关联数组进行,我发现这样更容易阅读:

<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
引用来自表单的输入(假设设置了
类型
组件
):

循环:

foreach ($cat as $key => $value) {
    echo 'Code: '.$key.', component: '.$value['comp'].', price:'.$value['price'];
}

谢谢你的快速回复John。好的,我更改了它,Html看起来像这样:汽车类型:无车货车卡车组件:无油轮胎火花塞php:$cat=array('Car\u TIR'=>array('comp'=>'Tires','price'=>100),'Car\u Oil'=>array('comp'=>'Oil'、'price'=>10)、'CAR\u SPK'=>array('comp'=>'Spark Plug'、'price'=>4)、'VAN\u TIR'=>array('comp'=>'Tires'、'price'=>120)、'VAN\u Oil'=>array('comp'=>'Oil'、'price'=>12)、'VAN\u SPK'=>array('comp'=>火花塞'、'price'=>5)、'TRK\u TIR'=>array('comp'=>150),'TRK_OIL'=>array('comp'=>'OIL','price'=>15),'TRK_SPK'=>array('comp'=>'Tires','price'=>6),);?>但它仍然不起作用。@user2085307:到底什么不起作用?你得到了什么?请编辑你的问题并在那里发布你的代码,读起来更方便:-):)好的,对不起。我在这里完全糊涂了,沮丧情绪正在上升。再次感谢,我会尽量做得更多readable@user2085307:没问题;-)只要告诉我们你想要完成什么,我们会支持你的。请在我点击提交时发布上面生成输出的代码。最后一部分是我页面上显示的内容:价格检查?数组(‘COMP’=>‘轮胎’,‘价格’=100),“CARP’=>‘油’,‘价格’=10),“CARYSPK’=>数组(‘COMP’=>‘火花塞’,‘价格’=4’),“VANUTIIR’=>。换句话说,没有任何处理。请张贴产生这个输出的代码的一部分。请考虑接受答案(左击Tigk标记)。如果它真的回答了你的问题
echo $cat['CAR_TIR']['comp']; // output: Tires
echo $cat['CAR_TIR']['price']; // output: 100
echo $cat['TRK_TIR']['price']; // output: 300
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'];
}