语法错误意外$ end

时间:2014-10-22 16:07:19

标签: php syntax eval heredoc

它给了我意想不到的$ 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; ?>

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

heredoc结束标记(此处为EOD)必须是唯一的(使用分号)。

在下一行移动?>

但是,更重要的是,你究竟想做什么?