php 循环嵌套输出表格,循环中的?>为什么不会打断循环?

<table>
<?php
while(···){
?>             //这个“?>”为什么没有打断循环?
<tr>
<tb>···</tb>
<tb>···</tb>
···
</tr>
<?php
}
?>
</table>

我在php学习过程中经常遇到这种循环输出表格的格式,一直搞不明白的地方在:如果php解析器遇到?>会停止解析,那么循环中的?>为什么不会打断循环? 循环中的?>被解析器捕捉到了一次还是多次?

阅读 4.8k
6 个回答

php解析规则而已

包含在

<?php
// 代码
?> 

只是说明其中的代码要按照 php 解析

这就是PHP啊,打断了那PHP的这个优势去哪里找。
这就是PHP的规则,没有为什么。php解析的整个文档,是整个文档中的所有<?php ?>

关键是你认为应该打断么?为什么你这么认为?


循环中的?>被解析器捕捉到了一次还是多次?
答:当然只有一次。你可以这么理解: 虽然我们看php文档是把php代码放<??>里面,把html等其他放在外面,但是php在解释时会首先把这份文档处理下,把<??>里的代码放在外面作为代码,把<??>外面的html等内容放在字符串常量里 并择机输出这些字符串。

我第一次听到php遇到说?>是停止解析的符号。<?php ?>或者<? ?>都是php的需要解析的部分,可以解析所有这些符号里面的代码块。

不是停止解析了,而是停止识别为php代码,<?php ?>这玩意里面包含php代码,而这玩意外面就不识别为php代码了,所以外面写html代码就没毛病。就像你和html嵌套用的时候<?php ?>echo 1;外面的echo 1会和html一块当成html而不会报错。

首先while循环,其中中断循环是括号里的表达式为false,其次PHP只有执行到脚本最后,或者碰到exit,die等函数才会结束运行,而不是碰到?>结束的。在纯PHP代码里最后一个?>一般都省略掉。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题