【问题标题】:Using the ternary operator in php to echo different statuses based on an event status in sql使用php中的三元运算符根据sql中的事件状态回显不同的状态
【发布时间】:2013-01-28 10:51:37
【问题描述】:

如果状态为 1,则为“有效的保险事件”,如果为 2,则为“已完成的保险事件”。

if(!empty($ins_event))
            {
            echo "<tr><td>&nbsp;<img src='/check-icon.gif'> <a href='". matry::here(array('event_id'=>$ins_event['id'])) . "'>" . ( $ins_event['status'] == 2 ? "Completed Insurance Event": "Active Insurance Event") . "</a></td></tr>"; 
            }
else 
        {
        echo "<tr><td>" . cbox_return() . "<a href='". matry::here_to('new', array('tfilt'=>'IN', 'pfilt'=>$patient->code)) . "' style='color: #000; color:$rx_image_color'>**Ins Event Not Created**</td></tr>";
        }

我在这里有一个颜色变量:

<?php
$rx_event_colors = $rx_ev_status = '#009933';
?>

如何使用这个变量来获取 2 的状态并改变字体颜色。

我应该分解脚本并使用 if {} else {} 语句吗?


更新代码:

echo "<tr><td>&nbsp;<img src='/check-icon.gif'> <a href='". matry::here(array('event_id'=>$ins_event['id'])) . "'" . ( $ins_event['status'] == 2 ? ' style="color: ' . $rx_ev_status . '">Completed Insurance Event' : '>Active Insurance Event') . "</a></td></tr>"; 

【问题讨论】:

    标签: php html sql css


    【解决方案1】:

    这是你的意思吗?你的问题不是很清楚..

    if(!empty($ins_event))
                {
                echo "<tr><td>&nbsp;<img src='/check-icon.gif'> <a ".($ins_event['status'] == 2 ? 'style="color:'.$rx_ev_status.';"': '')." href='". matry::here(array('event_id'=>$ins_event['id'])) . "'>" . ( $ins_event['status'] == 2 ? "Completed Insurance Event": "Active Insurance Event") . "</a></td></tr>"; 
                }
    

    为了清楚起见,这是一个将回声分成不同行的编辑...

    echo '<tr><td>&nbsp;<img src="/check-icon.gif">';
    echo '<a '.($ins_event['status'] == 2 ? 'style="color:'.$rx_ev_status.';"': '')." ";
    echo ' href="'. matry::here(array('event_id'=>$ins_event['id'])) . '">'; 
    echo ($ins_event['status'] == 2 ? 'Completed Insurance Event': 'Active Insurance Event');
    echo '</a></td></tr>'; 
    

    【讨论】:

    • 对所有不同的回声更加困惑。抱歉,感谢您的帮助,但这样似乎更令人困惑。
    • 如果您无法理解一条回显线被分成多条线,则不确定如何提供帮助。也许需要仔细阅读 php.net/manual 以获得进一步的帮助。虽然你不明白它在多行输出中具体是什么?
    • 对不起,它对我来说很好,我做了一个 var dump 并意识到我的字符串是空的,我使用了错误的变量。
    • 精湛 - 很高兴它的固定。但是我很困惑,当我的答案在他/相同/我提供了额外的答复之前,你接受了其他人的答案作为解决方案
    【解决方案2】:

    你基本上会做同样的三元运算:

    ($ins_event['status'] == 2 ? ' style="color: ' . $rx_ev_status . '"' : '')
    

    【讨论】:

    • 它不工作,但我觉得它应该是......我要更新我上面的代码。
    • 它有效,这是我的变量错误。感谢您的帮助.. 非常感谢,我学会了如何使用三元运算符在字符串中添加样式。 =]
    【解决方案3】:

    是的,出于性能和代码维护的原因,逻辑操作应尽可能少地进行。在单个 if { … } else { … } 块内设置文本状态和颜色变量。将状态和颜色存入变量后,可以大大简化echo语句。

    echo "<tr><td>&nbsp;<img src='/check-icon.gif'> <a href='". matry::here(array('event_id'=>$ins_event['id'])) . "'>$status</a></td></tr>";
    

    我还会考虑将matry::here(…) 的输出存储在一个变量中,以便于阅读代码。

    【讨论】:

    • “是的,出于性能原因,逻辑运算应尽可能少地执行” - 在二进制计算机中,什么比逻辑便宜?
    • OP 的最终代码使用单个三元语句,但最初的问题让我相信他打算使用两个三元语句:一个用于颜色,另一个用于文本。如果是这种情况,则代码运行速度会比他执行一次逻辑并将测试结果存储在一个或多个变量中的速度慢。请参阅pastebin.com/mbXKvh1v 了解我如何设想他的问题(函数 test0)以及我如何建议他重新格式化他的代码以提高性能和可维护性(函数 test1)。
    猜你喜欢
    • 2021-05-30
    • 1970-01-01
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多