如何根据字符串的一部分从PHP数组中删除重复值
我有一个如何根据字符串的一部分从PHP数组中删除重复值,php,arrays,unique,Php,Arrays,Unique,我有一个Name@Phone\n。我使用explode()将数据放入一个数组中。如何删除仅基于电话的重复行(值)?我想避免 Eddie@999-999-999 Ed@999-999-999 我想根据手机将其设置为唯一的。如果您不关心姓名,只需要一个唯一号码列表,您可以替换列表中所有非数字或破折号的字符,然后执行数组_unique(): <?php $result = array(); foreach($dataset as $input): $parts = explode('@
Name@Phone\n
。我使用explode()
将数据放入一个数组中。如何删除仅基于电话的重复行(值)?我想避免
Eddie@999-999-999
Ed@999-999-999
我想根据手机将其设置为唯一的。
如果您不关心姓名,只需要一个唯一号码列表,您可以替换列表中所有非数字或破折号的字符,然后执行数组_unique():
<?php
$result = array();
foreach($dataset as $input):
$parts = explode('@', $input);
$result[$parts[1]] = $parts[0];
endforeach;
$result = array_flip($result);
如果你知道数字总是用那种格式(name@number)那么@Kenaniah的响应效果很好。使用:
$result = array();
foreach($arrayData as $data){
$uniqueKey = strstr($data, '@');//@999-999-999
$result[$uniqueKey] = $data;
}
var_dump( $result );
您需要保留“Ed”和“Eddie”信息吗?不,只保留一条记录就可以了。这也可以很好地帮助您找到每天最新的目录,其中有多个目录,格式为YYYY-MM-DD-HH-MM-SS。我使用了$directory[$directory]=substr($directory,0,10)
这样,日期将成为键,编号最大的时间是最后一个要创建的时间。
$result = array();
foreach($arrayData as $data){
$uniqueKey = strstr($data, '@');//@999-999-999
$result[$uniqueKey] = $data;
}
var_dump( $result );