在数组,函数内的每一行上打开和关闭php标签

时间:2017-05-26 14:35:16

标签: php tags

我和一个基于kirby cms的php项目的网络程序员合作,他希望打开并关闭每一行:

<main>
  <?php /*php code here/* ?>
    <?php /*more php here*/ ?>
 ...

尝试遵循这种风格,我在代码中发现了一些错误。首先,我似乎无法在数组中间执行此操作:

BAD CODE

<?php $oo = array( ?>
<?php  'h' => 100, ?>
<?php  'v' => 100, ?>
<?php ); ?>

但我可以在foreach循环中间这样做:

<?php foreach ($p as $subp): ?>
  <div id='<?= $subp->title() ?>'>
<?php endforeach; ?>

是否有其他情况,例如数组,我不能这样做?

/编辑

根据答案,'foreach','while'或'if'块内只能有标记中断。

函数中的'foreach','while'或'if'怎么样?是'合法'?:

<?php
function myFunction($arg){
  if($arg === 'this'): ?>
    <?= '<p>yep</p>' ?>
  <?php else: ?>
    <?= '<p>nop</p>' ?>
  <?php endif;
};
?>

如果在函数内的foreach中嵌套怎么样?:

<?php
function myFunction($arr){
  foreach($arr as $val): ?>
    <p><?= $val ?> <p>
    <?php if($val === 'this'): ?>
      <?= '<p>yep</p>' ?>
    <?php else: ?>
      <?= '<p>nop</p>' ?>
    <?php endif;
  endforeach;  
};
?>

编辑/

谢谢

1 个答案:

答案 0 :(得分:3)

你不能&#34;突破php&#34;中期声明。 wline定义一个数组,例如你不能关闭php标签。唯一可以&#34;爆发的时间&#34; php是在打开和关闭循环或if / else语句之间。由于<?php foreach: ?>是一个完整的陈述而<?php foreach{ ?>不是完整的陈述,因此这实际上不会破坏陈述。这里有一些你可以做的例子:

<?php if($this!=$that): ?>
{something}
<?php endif ?>

<?php foreach($things as $thing): ?>
{something}
<?php endforeach ?>

<?php $while($this): ?>
{something}
<?php endwhile ?>

我想你得到的消息。你必须在php标签中有完整的声明,没有中断。

P.S。同时避免不惜一切代价使用速记<?而不是<?php,将项目移动到其他主机或升级您的主机可能会破坏您的项目,因为默认短标签未激活。 <?= ?>简写是安全的,因为它不受新版php设置的影响。

P.P.S不要在一行中听那个想要php的人,这会让你的代码难以阅读和维护。站得住,写出漂亮的代码:)

更新:(在@Jaume Mal提问后更新) 我并不是说我的答案中的例子是独占的,而是作为完整的语句和不完整的语句的例子。 (我也忘了提到关闭php标签中间功能,但也工作但我鄙视和woudl强烈建议反对。)所以例如<?php function foo(){是启动函数的完整声明但是(如其他情况下循环等) ..)它需要一个结束语句,在这种情况下}。这对于if / else或foreach等都是如此:

<?php if($this){ ?>
some code
<?php } ?>

是一个有效的代码,因为php标记中的代码片段是完整的语句。

相关问题