【问题标题】:Foreach from Explode in my Array doesn't work来自 Explode in my Array 的 Foreach 不起作用
【发布时间】:2015-11-30 22:21:38
【问题描述】:

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

<?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>

有什么想法吗?

【问题讨论】:

  • $genre .= $sep.'&lt;a href=... -> $sep .= '&lt;a href=... ; $sep = ', '; -> $sep .= ', '; ; echo $genre; -> echo $sep;
  • 为什么不将$genre = str_replace(' ', '', $genre); 替换为$genre = trim($genre);。这可能就是你想要的!
  • @HasseBjörk 是的,我试过这个,但我不知道为什么,但不起作用:/

标签: php arrays explode


【解决方案1】:

你在错误的地方回响。将 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>

如果你在循环之外回显,你只会得到$genrelast值这是一个工作EXAMPLE

编辑 - 附加信息

你也可以用trim()代替str_replace()

$genre = trim($genre);

【讨论】:

    【解决方案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;
    

    【讨论】:

    • 为什么 OP 应该尝试这个?一个好的答案总是会解释所做的事情以及这样做的原因,不仅是为了 OP,而且对于未来的 SO 访问者也是如此。您的代码没有不同于 OP 为更改变量名称而保存的代码。
    • @JayBlanchard 对于我缺乏知识和经验,我深表歉意。代码对我来说太明显了,所以我不知道该评论什么。我尊重您的意见,但是您对我的回答所做的行为似乎非常残酷,并且使我作为新手完全不愿回答任何问题。我更新了我的答案,因为浪费时间和正确的代码而得到 -1。
    • 很抱歉让您感到沮丧,但我正在努力帮助您改善答案。虽然您的答案对您来说可能很明显,但对于第一次访问 SO 的另一个新手来说可能不需要更好的解释。
    • @SamIvichuk 是的工作 :) 但我已经添加了我的 $sep :$genre_explode = explode(',', $r['genre']); $sep = ''; foreach($genre_explode as $genrew) { $genres = trim($genrew); $genre .= $sep.'&lt;a href="/series/genre/'.$genres.'/"&gt;'.$genres.'&lt;/a&gt;'; $sep = ', '; }
    • @SamIvichuk 我还有一个问题:如果在脚本中使用 while{ },他会保存另一个 $genre 因为我联系了 var $genre =( 一个解决方案?
    猜你喜欢
    • 2022-12-02
    • 2016-07-29
    • 2012-10-19
    • 2013-05-06
    • 2014-04-20
    • 2015-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多