我有这段代码:
<div class="boxContentScroll">
<?
while($row=mysql_fetch_array($query, MYSQL_NUM)) {
?>
<div class="boxAddCategory<? if($row[1]==1) echo "Yes"; else echo "No"; ?>">
<div class="boxAddCategory1">
<? echo $row[0]."<br />"; ?>
</div>
<div class="boxAddCategory2">
<?
if((isset($_SESSION['admin'])) && ($_SESSION['admin']==1)) {
?>
<input type="checkbox" <? if($row[1]==1) echo "checked='checked'" ?> value="categories[]" />
<?
} else echo " "
?>
</div>
</div>
<?
}
?>
</div>
但读得不太好(只需观看?>
或<?
的数量)。您有什么建议来改善它?感谢
答案 0 :(得分:4)
如果您希望此代码在所有环境中运行,请不要使用short_tags(<?
)。但是如果你在自己的服务器上运行它,你可以忽略它。
使用PHP的alternative syntax作为控制结构。这将使其更具可读性。
不要将您的业务逻辑与您的视图逻辑混合在一起。如果需要,可以设置自己的MVC堆栈或使用模板引擎。
答案 1 :(得分:1)
好吧,我会先用短版本替换:
<?php echo ($row[1]==1) ? "Yes" : "No"; ?>
答案 2 :(得分:1)
你可以这样写:
<? if($row[1]==1) echo "Yes"; else echo "No"; ?>
像这样:
<?= $row[1] == 1 ? 'Yes' : 'No' ?>
你可以替换它:
if((isset($_SESSION['admin'])) && ($_SESSION['admin']==1)) {
用这个:
if ( $admin ) {
并将其放在while循环之前:
$admin = isset($_SESSION['admin']) && $_SESSION['admin'] == 1;
答案 3 :(得分:1)
任何时候你都在循环中并且有一个静态条件来检查这样:
if((isset($_SESSION['admin'])) && ($_SESSION['admin']==1))
在循环外的变量中定义它。如果它不会在循环内更改,则不必每次都检查一次。这在执行资源密集型检查和函数调用时变得相关,这些调用不会在循环外产生不同的结果。
答案 4 :(得分:1)
<div class="boxContentScroll">
<?php while($row=mysql_fetch_array($query, MYSQL_NUM)) : ?>
<div class="boxAddCategory <?=($row[1] == 1 ? 'Yes' : 'No')?>">
<div class="boxAddCategory1">
<?=$row[0].'<br />'?>
</div>
<div class="boxAddCategory2">
<?php if((isset($_SESSION['admin'])) && ($_SESSION['admin']==1)) : ?>
<input type="checkbox" <?=($row[1]==1 ? 'checked="checked"' : '')?> value="categories[]" />
<?php endif; ?>
</div>
</div>
<?php endwhile; ?>
</div>
答案 5 :(得分:0)
使用HEREDOC:
<div class="boxContentScroll">
<?php
while ($row=mysql_fetch_array($query, MYSQL_NUM)) {
$class = ($row[1]==1) ? 'Yes' : 'No';
$checked = ($class) ? 'checked="checked"' : '';
$data = $row[0];
$admin = (isset($_SESSION['admin']) && $_SESSION['admin']==1) ? 1 : 0;
echo <<< HTML
<div class="boxAddCategory{$class}">
<div class="boxAddCategory1">
{$data}
</div>
HTML;
if ($admin) {
echo <<< HTML
<div class="boxAddCategory2">
<input type="checkbox" value="categories[]" {$checked} />
</div>
HTML;
}
echo <<< HTML
</div>
HTML;
}
?>
</div>