在一些php项目中我们经常可以看到有些php文件中的代码是只有开始标签"<?php",而没有结束标签"?>",那么什么情况下可以不写这个结束标签,而什么情况下又必须写呢?

关于PHP闭合标签官方解释

PHP闭合标签'?>'在PHP中对PHP的分析器是可选的。但是,如果使用闭合标签,任何由开发者,用户,或者 FTP应用程序插入闭合标签后面的空格都有可能会引起多余的输出、php错误、之后的输出无法显示、空白页。因此,所有的php文件应该省略这个php闭 合标签,并插入一段注释来标明这是文件的底部并定位这个文件在这个应用的相对路径。这样有利于你确定这个文件已经结束而不是被删节的。

网友给出的解释:

如果php页面没有闭合标签并且被其它程序引用或包含,那么可以减少很多很多问题,比如说:header, setcookie, session_start这些动作之前不能有输出,如果不小心在 '?>' 后边加了不可见字符(多余的空格、换行符)等破坏页面显示,就会报”Header already sent”错误,不写的话不会有此问题。另,可以直接把光标移到最后,接着编程。

关于php闭合标签的示例:

例:php可以不写闭合标签的实例

(1)、如果文件里的代码全部是PHP的,可以不用写'?>'闭合标签的

<?php  
/**
 * 本文件的所有代码都是php的,可以不用闭合标签
 * 需要注意的时,最好在文件最后加个注释
 */
echo 'feiniaomy.com';
echo 'https://feiniaomy.com';
/**本文件结束 */

(2)、

<?php  
/**
 * 本文件的所有代码都是PHP的
 */
$arr = array('host' => 'www.baidu.com' , 'name' => '百度搜索');
echo $arr['host'];
echo '<br/>';
echo $arr['name'];

例:php必须要写闭合标签的实例

如果PHP文件中含有除PHP代码以外的其它类型代码,是需要写php闭合标签的!

<?php  
echo '神州十二号飞船已成功升空!';
?>
<img src="a.png" >

注:上面的情况下,是必须要写 php 闭合标签的,不然会抛出错误!