【问题标题】:Syntax error unexpected $end语法错误意外 $end
【发布时间】:2014-12-18 04:07:24
【问题描述】:

这给了我意想不到的 $end 但我找不到问题出在哪里,在 EOD 之前或之后没有空格或缩进。我正在使用 eval() 进行替换。

<?php echo <<<EOD
<?php
    if((\${$type}s = \$this->{$type}())): 
        foreach(\${$type}s as \$item):
?>

            <tr>
                <td><?php echo \$item->Name; ?></td>
                <td><?php echo Table::countRows(\$item->Name); ?></td>
                <td><?php echo \$item->Engine; ?></td>
                <td><a href="<?php echo get_url('cp/system/database/tables/view/'.\$item->Name); ?>">Show</a></td>
                <td><a href="<?php echo get_url('cp/system/database/tables/rename/'.\$item->Name); ?>">Rename</a></td>
                <td><a href="<?php echo get_url('cp/system/database/tables/delete/'.\$item->Name.'/confirm'); ?>" class="item-remove-button">Delete</a></td>
            </tr>

<?php
       endforeach; 
   endif;
?>
EOD; ?>

【问题讨论】:

  • 您确实意识到&lt;?php echo $item-&gt;Name; ?&gt; 将被运行 而不是字面上的呼应,对吧?您实际上是在呼应foreach(${$type}s as $item),但随后正在运行 &lt;?php echo $item-&gt;Name; ?&gt;。你想用这段代码做什么?
  • @RocketHazmat 是的,我知道,这就是我修复上述代码的原因。这将用作创建节点的模板。现在它按预期工作。不知道 EOD;需要独处。

标签: php syntax eval heredoc


【解决方案1】:

EOD; 需要自己排成一行。那条线上根本不能有任何东西

<?php echo <<<EOD
<?php
    if((${$type}s = $this->{$type}())): 
        foreach(${$type}s as $item):
?>
EOD;
?>

            <tr>
                <td><?php echo $item->Name; ?></td>
                <td><?php echo Table::countRows($item->Name); ?></td>
                <td><?php echo $item->Engine; ?></td>
                <td><a href="<?php echo get_url('cp/system/database/tables/view/'.$item->Name); ?>">Show</a></td>
                <td><a href="<?php echo get_url('cp/system/database/tables/rename/'.$item->Name); ?>">Rename</a></td>
                <td><a href="<?php echo get_url('cp/system/database/tables/delete/'.$item->Name.'/confirm'); ?>" class="item-remove-button">Delete</a></td>
            </tr>

<?php echo <<<EOD
<?php
       endforeach; 
   endif;
?>
EOD;
?>

文档:http://us3.php.net/manual/en/language.types.string.php#language.types.string.syntax.heredoc

【讨论】:

    【解决方案2】:

    heredoc 结束标记(此处为 EOD)必须单独一行(带有分号)。

    ?&gt; 移到下一行。

    但是,更重要的是,你到底想做什么?

    【讨论】:

      猜你喜欢
      • 2011-02-09
      • 2012-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-15
      • 2014-08-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多