4 回答
TA贡献1818条经验 获得超7个赞
您可以使用而不是ifswitch
if (in_array("basement", $options)) {
array_push($features,145);
}
if (in_array("bathtub", $options)) {
array_push($features,167);
}
if(in_array("boiler", $options)) {
array_push($features,105);
}
因为 switch 语句的计算结果例如为
switch ([]) {
case true: ...
case false: ...
case true: ...
这不符合您的目的
TA贡献1804条经验 获得超7个赞
你在这里有很多需要解决的问题。首先,让我们假设这是一个相当标准的数组:$options
$options = ['basement', 'bathtub'];
现在,您将设置为一个数组来保存结果:$features
$features = array();
你不能在语句中做很多评估。在语句中,您尝试对“地下室”进行两次测试,而您需要做的就是让信息是否存在。只需测试每个价值购买循环选项并测试价值switchin_array("basement", $options) && "basement" != false:switch
foreach($options as $option) {
switch ($option) {
case "basement":
array_push($features,145);
break;
case "bathtub":
array_push($features,167);
break;
case "boiler":
array_push($features,105);
break;
}
}
结果如下:
print_r($features);
哪个返回
Array
(
[0] => 145
[1] => 167
)
TA贡献1802条经验 获得超4个赞
您可以使用而不是ifswitch
if (in_array("basement", $options)) {
array_push($features,145);
}
if (in_array("bathtub", $options)) {
array_push($features,167);
}
if(in_array("boiler", $options)) {
array_push($features,105);
}
因为 switch 语句的计算结果例如为
switch ([]) {
case true: ...
case false: ...
case true: ...
这不符合您的目的
TA贡献2003条经验 获得超2个赞
假设您有选项的值列表,则可以创建一个包含选项和值组合的数组。然后使用 仅匹配所选的选项(用于使选项值改为键。最后使用删除密钥...array_intersect_key()array_flip()array_values()
$options = ['basement', 'bathtub'];
$optionValues = ['basement' => 145, 'bathtub' => 167, 'boiler' => 105];
$features = array_values(array_intersect_key($optionValues, array_flip($options)));
print_r($features);
给。。。
Array
(
[0] => 145
[1] => 167
)
这样做的好处是,当您/如果您需要更改映射时,您只需要更新数组。$optionValues
- 4 回答
- 0 关注
- 108 浏览
添加回答
举报