0

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

<?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 ;} ?> 3 ;} ?> 4 ;} ?> 3 ;} ?> "

提前致谢

弥迦

4

4 回答 4

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 标签

于 2012-05-20T11:24:55.033 回答
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
?>
于 2012-05-20T11:41:10.180 回答
1

我不知道为什么你有所有这些额外的?>。模式是:

<?php

// PHP code goes here

?>

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


1.除了@Mihai在下面的评论中指出的情况......

于 2012-05-20T11:22:32.513 回答
0

要了解 php 标签,您可能想认为您在 HTML 文件中,并且您正在使用

在编写仅 PHP 的文件(类、接口、函数的特征列表和类似的没有模板的应用程序代码分组)时,建议在文件的第一个字符处打开而不是结束它。

但是,在编写模板文件时,建议使用 php 的替代语法

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

而不是标准:

<?php if($x) { ?>
<?php } else if($y) { ?>
<?php } else { ?>
<?php } ?>
于 2012-05-20T11:31:44.390 回答