【问题标题】:Multiple condition and expression with a ternary in phpphp中带有三元的多个条件和表达式
【发布时间】:2021-11-23 03:25:51
【问题描述】:
if(!$customLength){
?>
<th class="sku-label-value download-url-construct <?=$columnClassParent ?>">
 <span 
    data-option-id="<?=$values['option_id']?>"
    id="ns_code_<?= ((stripos($title, 'i.p. rating') !== false) ? 'iprating' : $title) ?>"
    data-code-sku="<?=$dataCodeSku ?>">
<?=$values['sku'] ?></span>
</th>
<?php
}

我想在 ID 上设置另一个三元条件可以吗?

所以对于这一行

    id="ns_code_<?= ((stripos($title, 'i.p. rating') !== false) ? 'iprating' : $title) ?>"

我希望能够解释另一个词并且仍然考虑 IP 评级。我希望这是有道理的。

【问题讨论】:

  • 您可以在三元组周围添加一个三元组。但是,如果这不是一个明确的真/假测试,我建议将三元组全部抛弃。三元组现在看起来可能是一个不错的选择,但对于许多查看您的代码的人来说,包括您自己在内,它们以降低代码的可读性而臭名昭著。因此,虽然它现在可能会节省一两行,但最好避免使用三元组并使用其他控制结构
  • “我希望能够解释另一个词,同时仍然考虑 IP 等级。” - 那到底是什么意思?你想输出一个不同的词然后,你想输出两个...?
  • @CBroe 我希望它做第一个单词“ip rating”,并为另一个单词示例“美元金额”做另一个。所以我希望它同时做这两件事。
  • 尝试在这样的地方坚持这么多逻辑没有太大意义,恕我直言。我会事先创建一个变量。 $displayTitle = stripos($title, 'i.p. rating') !== false) ? 'iprating ' : ''; $displayTitle .= stripos($title, 'dollar amount') !== false) ? 'dollar amount' : ''; $displayTitle = $displayTitle ? $displayTitle : $title; - 把它放在 if 条件之后,然后输出那个变量的内容。
  • 通过在'iprating ' 后面留一个空格,下一步可以追加 dollar amount,两个词不会粘在一起。 (如果 just iprating 得到输出,那应该没关系 - HTML 会忽略前导/尾随空格。如果由于某种原因确实很重要,您仍然可以在输出之前使用 trim该值。)

标签: php conditional-operator


【解决方案1】:

如果您想解释另一个词而不是 'i.p. rating' 在标题中,你可以在 "else" 部分有另一个三元:

    id="ns_code_<?= ((stripos($title, 'i.p. rating') !== false) ? 'iprating' : ((stripos($title, 'whatever') !== false) ? 'whatever' : $title)) ?>"

此时,我建议切换回标准条件块以获得更好的可读性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-15
    • 1970-01-01
    • 2011-03-11
    • 2020-11-05
    • 1970-01-01
    • 2019-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多