Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何根据字符串的一部分从PHP数组中删除重复值_Php_Arrays_Unique - Fatal编程技术网

如何根据字符串的一部分从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 );