这是我的代码:
$user_rep = $_SESSION['login'] == 1 ? $_SESSION['user_rep'] : null;
$html = '<div class="privileges-cases">';
$html .= '<span class="' . <?= !is_null($user_rep) && $user_rep >= 1 ? "half-opacity" : ""; ?> . '"></spam><i class="fa fa-check"></i>At least 1 reputation for asking/answring question</span>';
$html .= '<span class="' . <?= !is_null($user_rep) && $user_rep >= 15 ? "half-opacity" : ""; ?> . '"></spam><i class="fa fa-check"></i>At least 15 reputation for upvote</span>';
$html .= '<span class="' . <?= !is_null($user_rep) && $user_rep >= 50 ? "half-opacity" : ""; ?> . '"></spam><i class="fa fa-check"></i>At least 50 reputation for commenting</span>';
$html .= '<span class="' . <?= !is_null($user_rep) && $user_rep >= 125 ? "half-opacity" : ""; ?> . '"></spam><i class="fa fa-check"></i>At least 125 reputation for downvote</span>';
$html .= '</div>';
正如您所看到的,它是所有用户权限的列表,我试图使当前用户无法访问的权限变得苍白。 (注意如果用户没有登录,我不想这样做)
我的代码也可以,但它让我感到困扰,它并不性感。我曾多次写!is_null($user_rep)
(看起来很脏)以及其他一些最好依赖的条件,因为如果第一个是真的,那么就不需要别人了甚至被检查。
无论如何,我怎么能这样做?我的意思是我怎样才能让它变得更干净?
答案 0 :(得分:0)
您可以设置为0而不是null。
Fragment View
答案 1 :(得分:0)
如果不修改你正在尝试做的事情的核心,我会创建一个关联的权限数组和它们所需的声誉,然后循环,设置或省略半不透明度类。这是一个有效的例子,请注意我设置了&#34;用户&#34;代表16:
$user_rep = $_SESSION['login'] == 1 ? $_SESSION['user_rep'] : null;
$privileges = array(
'Asking/Answering Questions' => 1,
'Upvote' => 15,
'Comment' => 50,
'Downvote' => 125
);
echo '<div class="privileges-cases">';
foreach( $privileges as $privilege => $rep){
if( $user_rep == null ){
$class = 'half-opacity';
} else {
$class = $user_rep >= $rep ? '' : 'half-opacity';
}
echo "<span class=\"$class\"></span><i class=\"fa fa-check\"></i>At least $rep reputation for $privilege</span>";
}
echo '</div>';
通过使用null比较移动值比较,您可以使其更简洁。无论哪种方式,它确实最有意义的是你现在如何将它布局,只是与所需的声誉进行比较。
这样的事情就像&#34;清洁&#34;因为我可以考虑制作你已经获得的代码。
$user_rep = $_SESSION['login'] == 1 ? $_SESSION['user_rep'] : null;
$privileges = array(
1 => 'Asking/Answering Questions',
15 => 'Upvote',
50 => 'Comment',
125 => 'Downvote'
);
echo '<div class="privileges-cases">';
foreach( $privileges as $rep => $privilege ){
$class = $user_rep < $rep ? 'half-opacity' : '';
echo "<span class='$class'></span><i class='fa fa-check'></i>At least $rep reputation for $privilege</span>";
}
echo '</div>';
答案 2 :(得分:-2)
您可以使用@
http://php.net/manual/en/language.operators.errorcontrol.php
无论何时进行检查
<?= @$user_rep >= 1 ? "half-opacity" : ""; ?>
@运算符将忽略该错误,即未定义的变量错误
重要 @
运算符只会禁用代码当前行的错误。它不会隐藏您的php脚本生成的任何其他错误。