将值与foreach循环中的先前值进行比较并删除相同的值?

时间:2017-12-30 07:00:57

标签: php

在一份foreach声明中, 删除重复值?我不知道怎么问这个Q?

这是我的代码

ini

结果是

$text = "ABC01
ABC02
ABC03
ABC04
ABC05
ABC06
";
$text = explode("\n",str_replace("\r", "", $text));
$text = array_filter($text, 'trim');
$previous = "";

foreach ($text as $line) {

    if ($line == 'ABC04') {
        echo $previous." - ".$line;
        echo '<br>';
    }
    else{
        echo $line;echo '<br>';
    }

$previous = $line;
}

但第3行 ABC03

我想要这个结果

ABC01
ABC02
ABC03
ABC03 - ABC04
ABC05
ABC06

3 个答案:

答案 0 :(得分:1)

也许这是一个解决方案?
我使用array_search来查找值键 我将值添加到先前的值 然后我取消设置找到的键并使数组内爆。

$text = "ABC01
ABC02
ABC03
ABC04
ABC05
ABC06";
$text = explode("\n",str_replace("\r", "", $text));
$text = array_filter($text, 'trim');

$key = array_search("ABC04", $text);

$text[$key-1] .= " - " . $text[$key];
Unset($text[$key]);

Echo implode("<br>\n", $text);

https://3v4l.org/WrTCZ

编辑;我看到缩进代码导致3v4l出现问题。 将链接替换为不缩进

答案 1 :(得分:0)

这是一个有效的foreach。但我不清楚你到底想要做什么。

foreach ($text as $line) {

    if ($line == 'ABC03') {
        echo $line.' - ';
    }
    else{
        echo $line;
        echo '<br>';
    }

   if ($line != 'ABC04')
       $previous = $line;
   }
}

答案 2 :(得分:0)

这个也有效。这很简单

foreach ($text as $line) {

    if ($line == 'ABC03') {
        echo $line.' - ';
    } else {
        echo $line.'<br>';
    }

}