如何在str_split字符串行中取消设置重复的字符串

时间:2017-12-11 12:16:37

标签: php arrays string split unset

如何检查相同的字符串是出现两次还是多次并删除它。拆分字符串的示例是 123 456 123 789 ,我希望能够取消设置拆分字符串行中的重复字符 例如,我的预期输出应该像 web123 web456 web789 。这是我试过的:

<?php

$str = "jmja12345jmja612378911";
$int = filter_var($str, FILTER_SANITIZE_NUMBER_INT);
$disp = str_split($int, 3);
foreach($disp as $char){
    if(strlen($char) == "3") 
    {
        $net = substr($char,1,2);
        if(preg_match('/(50|30)/i', $net))
        {
            echo "our computer can not edit $net";
            exit();
        }
        else
        {
            $pd = str_replace("$net","web$net",$net);
            $str = implode(array_unique(explode( $pd)));
            echo $str;
        }
    }
}

但我得不到好结果。我究竟做错了什么?查看https://ideone.com/fork/rGyH41

2 个答案:

答案 0 :(得分:2)

如果您只需要删除重复的值。为什么你不直接这样试试。

<?php

$str = "jmja12345jmja612378911";
$int = filter_var($str, FILTER_SANITIZE_NUMBER_INT);
$disp = str_split($int, 3);
$arr = array_unique($disp);
var_dump($arr);

并为您的功能工作。试试这个

$str = "jmja12345jmja612378911";
$int = filter_var($str, FILTER_SANITIZE_NUMBER_INT);
$disp = str_split($int, 3);
foreach($disp as $char){
    if(strlen($char) == "3") 
    {
        $net = substr($char,1,2);
        if(preg_match('/(50|30)/i', $net))
        {
            echo "our computer can not edit $net";
            exit();
        }
        else
        {
            $pd[] = str_replace("$net","web$net",$net);
        }
    }
}

$array = array_values(array_unique($pd));
var_dump($array);
$str = implode(array_unique($pd));
echo $str;

答案 1 :(得分:0)

根据我的理解,您试图从字符串中删除所有非数字字符,并获得一个不重复数值的数组。 这是一种简单的方法。

class MockRouter {
    navigate = jasmine.createSpy('navigate');
    start = new NavigationStart(0, '/home');
    end = new NavigationEnd(1, '/home', '/dashboard');
    events = new Observable(observer => {
      observer.next(this.start);
      observer.next(this.end);
      observer.complete();
    });
  }

我希望这能解决你的问题。