<table>
<?php
while(···){
?> //这个“?>”为什么没有打断循环?
<tr>
<tb>···</tb>
<tb>···</tb>
···
</tr>
<?php
}
?>
</table>
我在php学习过程中经常遇到这种循环输出表格的格式,一直搞不明白的地方在:如果php解析器遇到?>会停止解析,那么循环中的?>为什么不会打断循环? 循环中的?>被解析器捕捉到了一次还是多次?
<table>
<?php
while(···){
?> //这个“?>”为什么没有打断循环?
<tr>
<tb>···</tb>
<tb>···</tb>
···
</tr>
<?php
}
?>
</table>
我在php学习过程中经常遇到这种循环输出表格的格式,一直搞不明白的地方在:如果php解析器遇到?>会停止解析,那么循环中的?>为什么不会打断循环? 循环中的?>被解析器捕捉到了一次还是多次?
这就是PHP啊,打断了那PHP的这个优势去哪里找。
这就是PHP的规则,没有为什么。php解析的整个文档,是整个文档中的所有<?php ?>
。
关键是你认为应该打断么?为什么你这么认为?
循环中的?>被解析器捕捉到了一次还是多次?
答:当然只有一次。你可以这么理解: 虽然我们看php文档是把php代码放<??>
里面,把html等其他放在外面,但是php在解释时会首先把这份文档处理下,把<??>
里的代码放在外面作为代码,把<??>
外面的html等内容放在字符串常量里 并择机输出这些字符串。
不是停止解析了,而是停止识别为php代码,<?php ?>
这玩意里面包含php代码,而这玩意外面就不识别为php代码了,所以外面写html代码就没毛病。就像你和html嵌套用的时候<?php ?>echo 1;
外面的echo 1会和html一块当成html而不会报错。
首先while循环,其中中断循环是括号里的表达式为false,其次PHP只有执行到脚本最后,或者碰到exit,die等函数才会结束运行,而不是碰到?>结束的。在纯PHP代码里最后一个?>一般都省略掉。
1 回答4.1k 阅读✓ 已解决
3 回答1.9k 阅读✓ 已解决
2 回答2.3k 阅读✓ 已解决
4 回答2.2k 阅读
3 回答2.1k 阅读
2 回答994 阅读✓ 已解决
1 回答1.4k 阅读✓ 已解决
php解析规则而已