【问题标题】:How to remove duplicate values from PHP array based on part of string如何根据字符串的一部分从 PHP 数组中删除重复值
【发布时间】:2023-03-26 16:39:01
【问题描述】:

我有一个Name@Phone\n 形式的文本文件。我将数据放入带有explode() 的数组中。如何仅基于电话删除重复的行(值)?我想避免

Eddie@999-999-999
Ed@999-999-999

我想根据手机使这个独一无二。

【问题讨论】:

  • 需要保留“Ed”和“Eddie”信息吗?
  • 不只保留一条记录就可以了。

标签: php arrays unique


【解决方案1】:
<?php
$result = array();
foreach($dataset as $input):
    $parts = explode('@', $input);
    $result[$parts[1]] = $parts[0];
endforeach;
$result = array_flip($result);

【讨论】:

  • 这也适用于尝试找到每天的最新目录,其中有多个目录,格式为 YYYY-MM-DD-HH-MM-SS。我使用了$directories[$directory] = substr($directory,0,10);,这样日期最终会成为关键,而编号最大的时间是最后创建的时间。
【解决方案2】:

如果您不关心名称并且只想要一个唯一数字列表,您可以替换列表中不是数字或破折号的所有字符,然后执行 array_unique():

$arr = array(
  'Eddie@999-999-999',
  'Ed@999-999-999'
);

$arr = preg_replace('/[^\d\-]/', '', $arr);
$arr = array_unique($arr);

print_r($arr);

如果您知道数字始终采用该格式 (name@number),那么来自 @Kenaniah 的回复效果很好。

【讨论】:

    【解决方案3】:

    用途:

    $result = array();
    foreach($arrayData as $data){
        $uniqueKey = strstr($data, '@');//@999-999-999
        $result[$uniqueKey] = $data;
    }
    
    var_dump( $result );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-06
      • 1970-01-01
      • 2020-06-03
      • 1970-01-01
      相关资源
      最近更新 更多