為什么我的三元忽略第一個條件($order->status === "prepairing")?檢查訂單狀態時,它總是跳過第一個條件并立即進入第二個條件(并且始終將其視為真)$messageMiddle = ( ($order->status === "prepairing") ? " your prder is being prepared. Make your way towards the store."
: ($order->status === "complete") ?' your order is done! Please show your order-code at the store.'
: ' thank you for ordering ');
2 回答

jeck貓
TA貢獻1909條經驗 獲得超7個贊
您需要按如下方式將括號中的每個下一個表達式分組。您忘記將第二個三元表達式括在括號中。
$messageMiddle = ($order->status === "prepairing") ? " your order is being prepared. Make your way towards the store." : (($order->status === "complete") ? ' your order is done! Please show your order-code at the store.' : ' thank you for ordering ');
但無論如何你都應該避免這種方法。

子衿沉夜
TA貢獻1828條經驗 獲得超3個贊
對訂單狀態做出反應的更好方法是使用switch 語句。像這樣:
switch ($order->status) {
case "preparing" : $messageMiddle = " your order is being prepared. Make your way towards the store.";
break;
case "complete" : $messageMiddle = " your order is done! Please show your order-code at the store.";
break;
default : $messageMiddle = " thank you for ordering ";
break;
}
很容易看出如何擴展它以對其他狀態詞做出反應。
請注意,我將“準備”更改為“準備”。
程序員追求的目標之一是簡潔的代碼。然而,較短的代碼并不總是更好的代碼。它可能可讀性較差,并且更難以維護和擴展。
- 2 回答
- 0 關注
- 189 瀏覽
添加回答
舉報
0/150
提交
取消