【发布时间】:2023-03-26 16:39:01
【问题描述】:
我有一个Name@Phone\n 形式的文本文件。我将数据放入带有explode() 的数组中。如何仅基于电话删除重复的行(值)?我想避免
Eddie@999-999-999
Ed@999-999-999
我想根据手机使这个独一无二。
【问题讨论】:
-
需要保留“Ed”和“Eddie”信息吗?
-
不只保留一条记录就可以了。
我有一个Name@Phone\n 形式的文本文件。我将数据放入带有explode() 的数组中。如何仅基于电话删除重复的行(值)?我想避免
Eddie@999-999-999
Ed@999-999-999
我想根据手机使这个独一无二。
【问题讨论】:
<?php
$result = array();
foreach($dataset as $input):
$parts = explode('@', $input);
$result[$parts[1]] = $parts[0];
endforeach;
$result = array_flip($result);
【讨论】:
$directories[$directory] = substr($directory,0,10);,这样日期最终会成为关键,而编号最大的时间是最后创建的时间。
如果您不关心名称并且只想要一个唯一数字列表,您可以替换列表中不是数字或破折号的所有字符,然后执行 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 的回复效果很好。
【讨论】:
用途:
$result = array();
foreach($arrayData as $data){
$uniqueKey = strstr($data, '@');//@999-999-999
$result[$uniqueKey] = $data;
}
var_dump( $result );
【讨论】: