3 回答

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超7個(gè)贊
對(duì)于您在這里的主要問(wèn)題...
您可以在一個(gè)三元條件下使用多個(gè)運(yùn)算符,它看起來(lái)像這樣:
$output = ($var1 === true && ($var2 == 2 || $var3 == 3)) ? 'if true' : 'if false';
但是我不會(huì)在您的情況下推薦它,因?yàn)槟娜獥l件將是其他程序員很難理解的一條超長(zhǎng)行。那么,......我將如何解決它?
只需將您的配置值重命名為更易于理解和更短的內(nèi)容:),然后您就可以進(jìn)行三元運(yùn)算,代碼看起來(lái)會(huì)很好。
方法編號(hào) 1:
<?php
$messages = [
0 => 'Free Shipping',
1 => 'Free engrave',
2 => 'FREE ENGRAVE & FREE shipping'
];
$shipping = $this->config->item('application_promo_shipping');
$engrave = $this->config->item('application_promo_engrave');
$message_key = ($shipping && $engrave) ? 2 : (($engrave) ? 1 : 0);
?>
<p class="mx-auto nav-link-promo"><?php echo $messages[$message_key]; ?></p>
方法編號(hào) 2:(不推薦)
<?php
$shipping = $this->config->item('application_promo_shipping');
$engrave = $this->config->item('application_promo_engrave');
?>
<p class="mx-auto nav-link-promo <?php echo ($shipping) ? '' : 'd-none'; ?>">Free Shipping</p>
<p class="mx-auto nav-link-promo <?php echo ($engrave) ? '' : 'd-none'; ?>">Free engrave</p>
<p class="mx-auto nav-link-promo <?php echo ($shipping && $engrave) ? '' : 'd-none'; ?>">FREE ENGRAVE & FREE shipping</p>

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊
一種方法是根據(jù)兩個(gè)變量創(chuàng)建輸出并將其存儲(chǔ)在一個(gè)數(shù)組變量中。如果長(zhǎng)度至少為 1 或更高,implode()則使用分隔符打印段落和值&。這樣,如果兩個(gè)條件都為假,該段落甚至不會(huì)在 HTML 中呈現(xiàn)。
通過(guò)三元運(yùn)算符使用較短的代碼可能很有用 - 但在這種情況下,如果使用普通if語(yǔ)句,條件為真,則根本不呈現(xiàn)輸出可能會(huì)更好。
$output = [];
if ($this->config->item('application_promo_shipping')) {
$output[] = "Free shipping";
}
if ($this->config->item('application_promo_engrave')) {
$output[] = "Free engraving";
}
if (count($output)) {
?>
<p class="mx-auto nav-link-promo"><?php echo implode(" & ", $output); ?></p>
<?php
}
如果您一心想要使用三元并使用d-none類(lèi),那么您也可以使用相同的條件來(lái)做到這一點(diǎn)(但您仍然需要前兩個(gè)if塊來(lái)聲明 的值$output)。
<p class="mx-auto nav-link-promo <?= count($output) ?: 'd-none'; ?>"><?= implode(" & ", $output); ?></p>

TA貢獻(xiàn)1821條經(jīng)驗(yàn) 獲得超5個(gè)贊
我傾向于使用更簡(jiǎn)單的方法來(lái)使我的代碼對(duì)其他開(kāi)發(fā)人員可讀。沒(méi)有什么比有人試圖變得不必要的聰明而不得不破譯代碼更糟糕的了。
我會(huì)做這樣的事情:
if (application_promo_shipping AND !application_promo_engrave) {
echo '<p class="mx-auto nav-link-promo">Free Shipping</p>';
}
if (application_promo_engrave AND !application_promo_shipping) {
echo '<p class="mx-auto nav-link-promo">Free Engraving</p>';
}
if (application_promo_engrave AND application_promo_shipping) {
echo '<p class="mx-auto nav-link-promo">Free Engraving</p> & <p class="mx-auto nav-link-promo">Free Shipping</p>';
}
- 3 回答
- 0 關(guān)注
- 190 瀏覽
添加回答
舉報(bào)