繁体   English   中英

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

[英]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之间进行过多的切换,因此您可能想趁此机会以更易读的形式重新编写代码。

在这种情况下,使用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以查找错误。 您会得到很多错误的点击。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM