PHP - 这个PHP语法有什么问题?

时间:2011-03-08 17:45:47

标签: php

我制作了这个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> <?
}

有什么想法吗?

5 个答案:

答案 0 :(得分:3)

代码看起来还不错。但是,您的代码非常难以阅读 - 我几乎可以理解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>";
  }

答案 1 :(得分:1)

不确定,但是您正在使用php的短标签。它并不像所用的那样在所有安装上得到支持。必须打开short_open_tag才能使用短标签。

<?php 
// bla
?>

not

<?
//bla
?>

答案 2 :(得分:1)

首先出现的问题是你应该使用<?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之间的过度切换,因此您可能希望借此机会以更易读的形式重新编写代码。

在这种情况下,使用printecho输出整个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的大型程序中查找错误。你会得到很多虚假的命中。

答案 3 :(得分:0)

PHP和HTML很好( fsvo。“很好”;首先,请关闭smart-tags!)。 Dreamweaver不知道如何正确突出显示它。

答案 4 :(得分:0)

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";
}