如何正确关闭此php语句?

时间:2012-05-20 11:20:32

标签: php if-statement syntax

我试图从一个更复杂的行列表等中偷取的一些元素中创建一个简单列表,我只需要列出用逗号分隔的单行值。

<?php foreach ($document_items as $document_item)
                {
                    if ($document_item->document_id == $document->id)
                            {
                                    if (nbf_common::nb_strlen($document_item->product_code) > 0)
                                    {
                                    echo nbf_common::nb_strlen($document_item->product_code);
                                    } 
                            ;}  ?> 
                ;} ?>

                    <?php  } ?>

我得到的结果是“3;}?&gt; 3;}?&gt; 4;}?&gt; 3;}?&gt;”

提前致谢

4 个答案:

答案 0 :(得分:3)

试试这个

<?php
foreach ($document_items as $document_item)
                {
                    if ($document_item->document_id == $document->id)
                            {
                                    if (nbf_common::nb_strlen($document_item->product_code) > 0)
                                    {
                                        echo nbf_common::nb_strlen($document_item->product_code);
                                    } 
                            } 
                } 


?>

详细信息PHP Tags

答案 1 :(得分:2)

更改#9,#10,删除#11行。你正在做的是打印字符:;} ?> 并且在语法上是错误的。这是正确的:

<?php foreach ($document_items as $document_item)
{
    if ($document_item->document_id == $document->id)
    {
        if (nbf_common::nb_strlen($document_item->product_code) > 0)
        {
            echo nbf_common::nb_strlen($document_item->product_code);
        } 
    } // here
} // here
?>

同样对于“逗号分隔”部分,将所需值放在变量中并在结尾处回显它。 可能是这样的:

<?php
$string = '';
foreach ($document_items as $document_item)
{
    if ($document_item->document_id == $document->id)
    {
        if (nbf_common::nb_strlen($document_item->product_code) > 0)
        {
            $string .= nbf_common::nb_strlen($document_item->product_code).',';
        } 
    }
}

echo rtrim($string, ','); // remove the last comma
?>

或使用临时数组在末尾粘贴它们:

<?php
$lines = array();
foreach ($document_items as $document_item)
{
    if ($document_item->document_id == $document->id)
    {
        if (nbf_common::nb_strlen($document_item->product_code) > 0)
        {
            $lines[] = nbf_common::nb_strlen($document_item->product_code);
        } 
    }
}

echo implode(',', $lines); // bind them with comma
?>

答案 2 :(得分:1)

我不确定为什么你有这些额外的?>。模式是:

<?php

// PHP code goes here

?>

即。每个<?php都有匹配的?>;不多也不少。 1

<小时/> <子> 1。除了@Mihai在下面的评论中指出的情况......

答案 3 :(得分:0)

要了解php标记,您可能会认为自己处于HTML文件中并且正在使用

来破坏HTML流程

当只编写PHP文件(类,接口,traits函数列表以及类似的应用程序代码分组而没有模板)时,建议打开文件中的第一个字符而不是结束它。

在编写模板文件时,建议使用php的alternate syntax

<?php if($x): ?>
<?php elseif($y): ?>
<?php else: ?>
<?php endif; ?>

而不是标准:

<?php if($x) { ?>
<?php } else if($y) { ?>
<?php } else { ?>
<?php } ?>