php中的数据创建是这样的:
$name_arr = array('张三','李四','王五','张三','张三');
其中,张三这个值出现了重复。
这时,我们如果要知道哪几个值重复了,可以有以下两种方法:
一、利用php自带函数
1、通过array_unique($array)这个函数获取删除重复值的数组,如:
$unique_arr = array_unique($name_arr);
var_dump($unique_arr);
打印出来的内容如下,最后出现的那两个‘张三’被删除掉了:
array(3) {
[0]=>string(6) “张三”
[1]=>string(6) “李四”
[2]=>string(6) “王五”
}
2、通过array_diff_assoc($array, $unique_arr)(数组差集函数)得到被删除的值,如:
$repeat_arr = array_diff_assoc ($name_arr,$unique_arr);
var_dump($repeat_arr);
被删除的那两个‘张三’被打印出来了:
array(2) {
[3]=>string(6) “张三”
[4]=>string(6) “张三”
}
下标也是对应原数组的。
二、利用for循环自己实现
class demo{
function FetchRepeatDataInArray($array) {
$len = count($array);
for($i=0; $i<$len; $i++) {
for($j = $i + 1; $j<$len; $j++) {
if ($array[$i] == $array[$j]) {
$repeat_arr[] = $array[$i];
break;
}
}
}
return $repeat_arr;
}
function shuchu(){
//这里要注意的是,调用同一个类中的function,需要用$this->
var_dump($this->FetchRepeatDataInArray($name_arr));
}
}
输出结果为:
array(2) {
[0]=>string(6) “张三”
[1]=>string(6) “张三”
}
这里因为是新建的一个数组,所以下标没有对应原数组中的下标。