微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

php – 如果有连续的类似字符串,则只打印一个字符串

我有一个变量$b = substr($r [‘pon_port’],4,2);在foreach循环中.
$b的Var转储给出了这样的字符串列表:

string(1) "0" string(1) "0" string(1) "0" string(1) "0" string(1) "0"
string(1) "1" string(1) "1" string(1) "1" string(1) "1" string(1) "1"
string(1) "2" string(1) "2" string(1) "2" string(1) "2" string(1) "2"
string(1) "3" string(1) "3" string(1) "3" string(1) "3" string(1) "3"
string(1) "4" string(1) "4" string(1) "4" string(1) "4" string(1) "4"
string(1) "0" string(1) "0" string(1) "0" string(1) "0" string(1) "0"
string(1) "1" string(1) "1" string(1) "1" string(1) "1" string(1) "1"

我想要的是如果有类似的连续字符串我想只有一个字符串>例如:在上面的转储中.我只是想:

string(1) "0" 
string(1) "1" 
string(1) "2" 
string(1) "3" 
string(1) "4" 
string(1) "0" 
string(1) "1"

解决方法

如果我理解正确,你可以完成这个,记住最后一个数字:

$lastB = null;
foreach ($foo as $r) //I'm guessing that $r is the dummy variable,based on your code
{
        $b = substr($r['pon_port'],2); //You wrote this

        //This part prevents repetitions from happening
        if ($lastB === null || $b != $lastB) var_dump($lastB = $b);
}

(在这种情况下,我将赋值转移到参数中,使用var_dump($lastB = $b)而不是两个单独的语句.我发现它更整洁,但如果您愿意,可以将它们分开.)

如果您想要打印变量以外的其他操作,最终结果是,您可以使用以下代码

$lastB = null;
foreach ($foo as $r) //I'm guessing that $r is the dummy variable,2); //You wrote this

        //This part prevents repetitions from happening
        if ($lastB === null || $b != $lastB)
        {
            //do something with $b...
            $lastB = $b;
        }
}

我自己在序列“2 2 7 8 8 7”上尝试第一个代码,得到:

string(1) "2" string(1) "7" string(1) "8" string(1) "7"

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐