亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

根據數據庫值返回可選值

根據數據庫值返回可選值

PHP
小唯快跑啊 2023-06-18 17:04:35
1,2 or 3我試圖根據我的數據庫列中名為 的值返回一個 SVG foo_options。如果 1 返回綠色 SVG如果 2 返回橙色 SVG如果 3 返回紅色 SVGfoo_options在數據庫中的值為 3。所以 SVG 應該是紅色的。這是我的模型中的內容:   public function getOptionValueAttribute(){        if ('1') {            return '<svg>Green</svg>';        }elseif ('2') {            return '<svg>Orange</svg>';        }elseif ('3') {            return '<svg>Red</svg>';        } else {            return '';        }    }那么我的邏輯是:if($bar->barDetail->some_options = '1' || $bar->barDetail->some_options = '2' || $bar->barDetail->some_options = '3'){    dd($bar->barDetail->optionValue);}根據以上邏輯,總是返回 GREEN (1)。任何返回 Red 的幫助將不勝感激。
查看完整描述

1 回答

?
炎炎設計

TA貢獻1808條經驗 獲得超4個贊

getOptionValueAttribute函數沒有在內部進行任何檢查。您將字符串“1”傳遞給if運算符,并且if與布爾值一起使用。非空字符串始終轉換為 true,因此您始終返回綠色。


我假設您正在嘗試做的是您希望檢查某個變量的值并返回不同的結果(如果它是 1、2 或 3)。因此我認為您需要將該變量作為函數的輸入傳遞然后將值與其進行比較:


public function getOptionValueAttribute($option){

    if ($option == 1) {

        return '<svg>Green</svg>';

    }elseif ($option == 2) {

        return '<svg>Orange</svg>';

    }elseif ($option == 3) {

        return '<svg>Red</svg>';

    } else {

        return '';

    }

}

這樣,如果您像這樣調用函數(例如),您將獲得紅色:


getOptionValueAttribute(3);

如果您堅持使用字符串,只需在數字周圍添加引號即可。


我不知道你上面顯示的第二個代碼試圖解釋什么。我根本不明白這個邏輯以及它與功能的關系。請注意,比較運算符是 == 或 ===,而不僅僅是 =。


查看完整回答
反對 回復 2023-06-18
  • 1 回答
  • 0 關注
  • 125 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號