来自我阵列中爆炸的Foreach无法正常工作

时间:2015-11-30 22:21:38

标签: php arrays explode

我遇到爆炸问题,我的代码:

<?php
$the_genre = 'Drame, Action, Comédie';

$genre_explode = explode(',', $the_genre);

$sep = '';
foreach($genre_explode as $genre)
{
    $genre = str_replace(' ', '', $genre);

    $genre .= $sep.'<a href="/genre/'.$genre.'/">'.$genre.'</a>';

    $sep = ', ';
}

echo $genre;
?>

我有这个:

Comédie, <a href="/genre/Comédie/">Comédie</a>

我想要这个:

<a href="/genre/Drame/">Drame</a>, <a href="/genre/Action/">Action</a>, <a href="/genre/Comédie/">Comédie</a>

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

您正在合并循环中指定的变量,因此结果只输出了数组的最后一个元素。您可以使用此代码来实现您的目标:

$the_genre = 'Drame, Action, Comédie';
$genre_explode = explode(',', $the_genre);

$out = '';
foreach($genre_explode as $genre)
{
   $genre = trim($genre);
   $out .= '<a href="/genre/'.$genre.'/">'.$genre.'</a>, ';
}

echo $out;

答案 1 :(得分:2)

你在错误的地方呼应。将echo语句移动到循环中:

foreach($genre_explode as $genre)
{
    $genre = str_replace(' ', '', $genre);

    $genre .= $sep.'<a href="/genre/'.$genre.'/">'.$genre.'</a>';

    $sep = ', ';

    echo $genre;
}

这将返回:

Drame<a href="/genre/Drame/">Drame</a>Action, <a href="/genre/Action/">Action</a>Comédie, <a href="/genre/Comédie/">Comédie</a>

如果您在循环之外回显,则只会获得最后$genre这是一个有效的EXAMPLE

编辑 - 其他信息

您也可以使用str_replace()代替trim()

$genre = trim($genre);