4

我遍历我的数组以打印文章名称:

<?php
if ($articles) { 
    foreach($articles as $article) { 
        echo $article->name.", ";       
    } // end foreach article
} // end if has articles
?>

这显然会产生类似的东西

Apple, Banana, Mango,

但我正在寻找:

Apple, Banana, Mango

我尝试了一些像这样的内爆语句:

<?php
if ($articles) { 
    foreach($articles as $article) { 
        echo implode(", ", $article->name);     
    } // end foreach article
} // end if has articles
?>

或者

<?php
if ($articles) { 
    echo implode(", ", $articles->article->name);       
} // end if has articles
?>

这些都不适合我。怎样才能做对?感谢提示!

4

5 回答 5

6

您可以使用foreach将文章名称添加到一个数组,然后implode()是该名称数组。

<?php
if ($articles) { 
    $article_names = array();

    foreach($articles as $article) { 
        $article_names[] = $article->name;
    } // end foreach article

    echo implode(', ', $article_names);
} // end if has articles
?>
于 2010-12-19T09:48:08.890 回答
6

检查你的第一次循环迭代要容易得多,在你的文本之前写逗号,并在第一次迭代时留下这个逗号:

<?php
if ($articles) { 
    $firstiteration = true:
    foreach($articles as $article) { 
        if(!$firstiteration){
            echo ", ";
        }
        $firstiteration = false;
        echo $article->name;       
    } // end foreach article
} // end if has articles
?>

另一种(在我的选项中更漂亮)的可能性是覆盖您的文章类的 _toSting() 方法:

...
function __toString(){
    return $this->name;
}
...

简单地说echo implode(", ",$articles)

于 2010-12-19T09:49:20.917 回答
3

这是做你想做的更好的方法:

<?php
$string = '';
if ($articles) { 
    foreach($articles as $article) { 
        $string .= $article->name.", ";       
    }
}
$string = substr($string, 0, -2);
echo $string;
?>
于 2010-12-19T09:54:50.017 回答
0

PHP 有很多很好的数组函数,这就是其中之一。

$namesArray = array_map(function($x){return $x->name;}, $articles);
$string = implode(',' $namesArray);

或者

$first = true;
array_walk(function($x) use (&$first)
           {
               if(!$first) {echo ', ';} else{$first = false;}
               echo $x->name;
           }, $articles);

我也很喜欢上面对 __toString 函数的响应,但我想展示这些数组函数,因为我认为它们经常未被充分利用,有利于或不必要的 foreach 循环。

于 2010-12-19T10:04:53.317 回答
0

您可以使用修剪功能删除最后一个逗号和空格。这是最简单的方法。。

<?php
    if ($articles) { 
         foreach($articles as $article) { 
             echo trim(implode(", ", $article->name), ', '); 
         }
     }
?>
于 2013-03-21T18:42:09.937 回答