[英]PHP - What's wrong on this PHP syntax?
我制作了这个PHP脚本,但是Dreamweaver指出(作为对编写代码的解析),该字符串不正确。
无论如何,它都可以完美地工作,但也许我错了:
for($i=1; $i<=$npagine; $i++) {
?> <a <? if($i==$index) { ?> class="paginas" <? } else { ?> class="pagine" <? } ?> href="index.php?<?=$splitter_zone?>&index=<?=$i?>"><?=$i?></a> <?
}
有任何想法吗?
该代码看起来还可以。 然而,你的代码是非常难以阅读-我几乎能理解Dreamweaver中窒息吧:)
这是一个更简单的建议:
for($i=1; $i<=$npagine; $i++)
{
$class = ($i == $index ? "paginas" : "pagine");
echo "<a class='$class' href='index.php?$splitter_zone&index=$i'>$i</a>";
}
不确定,但是您正在为php使用short标签。 而且它并不像以前那样在所有安装中都受支持。 必须启用short_open_tag才能使用短标签。
<?php
// bla
?>
not
<?
//bla
?>
首先,您应该使用<?php
打开PHP标记,而不仅仅是<?
。 简写形式已被弃用,可能无法始终正常运行。
此外,不赞成使用简短格式<?=
来打印输出。 您应该使用<?php print
或<?php echo
。 (是的,我知道它会使代码更长……不要抱怨!;-))
这可能是破坏您程序的原因。 PHP的新安装将使简短形式的PHP标签停滞不前。 就这么简单。
但是,当我在这里时...您遇到的第二个问题是PHP与HTML之间的混入和混入。 您应该清理代码,以便不必拥有太多PHP。 以这种方式进行操作实际上几乎无法跟踪HTML中的标签和PHP中的括号。 几乎可以保证会导致错误,并且在两年后再次进行错误修复时很难读懂。
为了解决这个问题,我建议您更像这样编写代码:
<?php
for($i=1; $i<=$npagine; $i++) {
if($i==$index) {$class='paginas';} else {$class='pagine';}
.... //output your HTML here, without the if() condition embedded in it.
}
?>
您可以使用三元运算符进一步简化该操作。
切换到长格式的PHP标签<?php
积极地阻止以这种方式在PHP和HTML之间进行过多的切换,因此您可能想趁此机会以更易读的形式重新编写代码。
在这种情况下,使用print
或echo
输出整个HTML标签没有什么错,而不是切换到HTML模式进行打印。
因此,您可能会得到如下代码:
<?php
for($i=1; $i<=$npagine; $i++) {
$class = ($index == $i) ? 'paginas' : 'pagine';
print "<a class='{$class}' href='index.php?{$splitter_zone}&index={$i}>{$i}</a>";
}
?>
我相信您会同意的,它更加简单易读。
我要说的最后一点是,我总是建议避免使用像$i
这样的单字符变量名称。 尝试使用更具描述性的内容。 这似乎已经足够无害了,但可以想象一下,尝试在大型程序中搜索$i
以查找错误。 您会得到很多错误的点击。
PHP和HTML很好( fsvo。 “ fine”;一方面,关闭smart-tags
!)。 Dreamweaver不知道如何正确突出显示它。
for($i=1; $i<=$npagine; $i++) {
$class=$i==$index?"paginas":"pagine";
echo"<a class='{$class}' href='index.php?{$splitter_zone}&index={$i}>{$i}</a>\r\n";
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.