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 關注
- 148 瀏覽
添加回答
舉報