在一份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
答案 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);
编辑;我看到缩进代码导致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>';
}
}