【问题标题】:Remove number from array with repeated digits从具有重复数字的数组中删除数字
【发布时间】:2015-04-04 05:10:00
【问题描述】:

我想从数组中删除重复数字的数字。

array('4149','8397','9652','4378','3199','7999','8431','5349','7068');

array('8397','9652','4378','8431','5349','7068');

这个东西我试过了

foreach($array as $key => $value) {
    $data = str_split($value, 1);
    $check = 0;
    foreach($data as $row => $element) {
        $check = substr_count($value, $element);
        if($check != 1) {
            array_diff($array, array($value));
        }
   }
}

【问题讨论】:

  • JS 或 PHP 决定或选择两者!
  • 我在使用 Laravel 时最好使用 PHP
  • 你有没有尝试过一些事情来实现你的目标?
  • 使用explode打断字符串并检查每个数字是否完整。
  • @DharmendraJadon 然后在你的问题中添加这个尝试^!

标签: php arrays filtering


【解决方案1】:

您可以使用匹配的正则表达式过滤数组:

  • (.)任意字符
  • .* 后跟零个或多个字符
  • \1 后跟第一个字符一次

示例代码:

$array = array('4149','8397','9652','4378','3199','7999','8431','5349','7068');

$result = array_filter(
    $array,
    function ($number) {
        return !preg_match('/(.).*\\1/', $number);
    }
);

echo implode(', ', $result), PHP_EOL;

输出:

8397, 9652, 4378, 8431, 5349, 7068

【讨论】:

    【解决方案2】:

    这应该适合你:

    这里我先把str_split()每个元素用array_map()放到一个单独的数组中。在此之后,我只需将拆分后的数组与具有array_unique() 数字的相同数组进行比较,并检查它们是否相同。如果是,我返回implode() 数字,否则返回错误。最后,我只是用 array_filter() 过滤出带有 false 的元素。

    所以换句话说,我只是将这两个数组与它们进行比较:

    数组1:

    Array
    (
        [0] => Array
            (
                [0] => 4
                [1] => 1
                [2] => 4
                [3] => 9
            )
    
        //...
    
    )
    

    数组2:

    Array
    (
        [0] => Array
            (
                [0] => 4
                [1] => 1
                [3] => 9
            )
        //...
    
    )
    

    代码:

    <?php
    
        $arr = ['4149', '8397', '9652', '4378', '3199', '7999', '8431', '5349', '7068'];
        $arr = array_map("str_split", $arr);
    
        $result = array_filter(array_map(function($v1, $v2){
            return ($v1 === $v2?implode("", $v1):false);
        }, $arr, array_map("array_unique", $arr)));     
    
        print_r($result);
    
    ?>
    

    输出:

    Array ( [1] => 8397 [2] => 9652 [3] => 4378 [6] => 8431 [7] => 5349 [8] => 7068 )
    

    【讨论】:

      猜你喜欢
      • 2019-08-10
      • 1970-01-01
      • 2014-11-23
      • 2011-03-24
      • 2022-01-10
      • 2015-07-28
      • 2022-11-26
      • 2016-09-30
      相关资源
      最近更新 更多