PHP中的花括号可以放在php脚本标签之外吗?

时间:2015-05-05 01:15:39

标签: php wordpress

我正在阅读我公司网页的一些wordpress代码,以便了解它们。但是,我发现大括号里面没有完成大括号。就像下面的代码一样,为什么第二行中的花括号没有在脚本标签中完成,而是放在最后?

如果要继续循环,为什么脚本标签已关闭?为什么不继续呢?

while(have_posts())
    { the_post(); ?>
        <?php $postMetas = get_post_meta(get_the_ID()); ?>
        <?php /*echo "<pre>"; print_r($postMetas); die; */?>
        <div class="row top2">
            <div class="overlay">
                <div class="overlay-gradient"></div>
            </div>
            <div class="video">
                <?php if(get_post_meta(get_the_ID(), 'wpcf-select-image', true) == 1){ ?>
                    <img src="<?php echo get_post_meta(get_the_ID(), 'wpcf-image', true); ?>" alt="">
                <?php }else{ ?>

                <?php } ?>
            </div>
 <?php } ?>

3 个答案:

答案 0 :(得分:2)

在PHP中,大括号{}表示代码块的开头和结尾。该代码块必须完整,否则在编译时会出现E_FATAL错误。

抛出的是开始和结束括号位于不同的<?php ?>块中。只要您匹配括号,就允许这样做。至于为什么使用它,你可以在代码块周围放置非PHP代码(在本例中为HTML),而不是使用长echo字符串。

如果这太令人困惑,您可以随时使用alternative syntax

<?php while(have_posts(): ?>
    Your while block code here
<?php endwhile ?>

答案 1 :(得分:1)

  

PHP中的花括号可以放在php脚本标签之外吗?

没有。如果您不在PHP标记中使用它们,那么PHP会将它们解释为文本 因此,PHP将返回错误,并且可能是“致命的”,因为某些需要大括号 - 例如循环。他们不在PHP标签内将意味着PHP只会确定他们缺少

  

为什么第二行中的花括号未在脚本标记中完成   在那里,但放在最后?

它就在它需要的地方。循环开始的位置和循环的位置之间的代码需要包含在循环中。

  

如果要继续循环,为什么脚本标签已关闭?为什么不   继续吗?

您可以根据需要或要求打入和关闭PHP。 众所周知,Wordpress遵循这种模式,我相信它可以让它(应该)更容易使用代码,而不是只有一个完整的PHP文件,它将HTML分离出来。

打入和退出PHP标签并不总是一个好主意,但“适当”的方式和时间主要取决于个人选择。
有更坚实的“理由”(在网站上搜索此类问题/辩论),但个人我更喜欢将其保持在最低限度。

PHP和HTML之间的实际交换太多会导致它比你在PHP中编写它所有的可读性更低。

答案 2 :(得分:0)

您还可以使用 shortecho 代替常规<?php echo

,让您的代码更漂亮

通常,标准的输出数据方式

<h1><?php echo 'Heading title'; ?></h1>

做同样事情的速记方式。

<h1><?='Heading title'; ?></h1>

两者都给出相同的结果,你决定哪一个更适合更容易阅读。请注意,<?=不是短标签,因为默认情况下某些服务器上没有启用短标签,但您可以随时依赖。

关于这个

  

PHP中的花括号可以放在php脚本标签之外吗?

是的,他们可以,但是,那不再是php了。在99%,这将是一些JavaScript对象内容。 *(笑话)

真实答案 - 没有。