首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有一种有效的方法来编写这个PHP / else语句?

是否有一种有效的方法来编写这个PHP / else语句?
EN

Stack Overflow用户
提问于 2011-01-12 20:39:58
回答 5查看 232关注 0票数 0

我为我的网络应用程序编写了一个简单的问题跟踪器。我有一些评论,我想保密(只有一个角色的‘根’可以看到他们)。是否有更好的方法来编写下面的内容,这样我就不需要空的there部分了?

$role将是“根”或其他值。

如果评论是私有的,则$is_private将为真。

代码语言:javascript
复制
<?php
// Don't show private comments to non-root users
if ($is_private && 'root' != $role):
    // NON Root cannot see private
else:
?>
<div class="comment <?= $is_private ? 'private' : '' ; ?>">
    <div class="comment-meta toolbar">
    <?= $is_private ? 'PRIVATE - ': ''; ?>
    <span class="datestamp"><?= $created_at; ?></span> - 
    <span class="fullname"><?= $fname . ' ' . $lname; ?></span></div>
    <p class="content"><?= nl2br($body); ?></p>

</div>
<?php endif; ?>
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-01-12 20:43:55

您所需要做的就是反转条件:如果注释不是私有的,或者如果$role是“根”,则它们是可见的。

代码语言:javascript
复制
<?php
// Don't show private comments to non-root users
if (!$is_private || 'root' == $role):
?>
<div class="comment <?= $is_private ? 'private' : '' ; ?>">
    <div class="comment-meta toolbar">
    <?= $is_private ? 'PRIVATE - ': ''; ?>
    <span class="datestamp"><?= $created_at; ?></span> - 
    <span class="fullname"><?= $fname . ' ' . $lname; ?></span></div>
    <p class="content"><?= nl2br($body); ?></p>

</div>
<?php endif; ?>
票数 3
EN

Stack Overflow用户

发布于 2011-01-12 20:42:18

您可以简单地反转整个表达式:

代码语言:javascript
复制
if (!($is_private && 'root' != $role))

或者使用德摩根定律来解决这个问题:

代码语言:javascript
复制
    !($is_private && 'root' != $role))
<=>  !$is_private || !('root' != $role)
<=>  !$is_private || 'root' == $role
票数 2
EN

Stack Overflow用户

发布于 2011-01-12 20:43:58

代码语言:javascript
复制
if (!$is_private || 'root' == $role):
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4673787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档