1、编写函数function get_duplicate_num_array($in, $num),获取最大相同元素数组的返回结果数组
其中,$in为输入数组,$num为相同数组元素的重复上限数值($num>=2)。
1-1、例如:$in = [1, 20, 20 ,37, 20, 45, 38, 38, 20, 22, 26, 28, 45, 45, 37, 37];
$out = [1, 20, 20, 37, 37 ,45, 45, 38, 38, 22, 26, 28];
// 相同的数组元素进行合并,保持原来数组元素的先后顺序
<?php
$in = [1, 20, 20 ,37, 20, 45, 38, 38, 20, 22, 26, 28, 45, 45, 37, 37];
// $out = [1, 20, 20, 37, 37 ,45, 45, 38, 38, 22, 26, 28];
function get_duplicate_num_array($in, $num) {
$uni = [];
$out = [];
$length = count($in);
for($i = 0; $i < $length - 1; $i++) {
$cur_data = $in[$i];
if(!in_array($cur_data, $uni)) {
$uni[] = $cur_data;
$out[] = $cur_data;
// 相同数组元素的重复次数的初值
$same_num_i = 0;
// 查询与当前数据值相同的其他数组元素值
for($j = $i + 1; $j < $length; $j++) {
if($in[$j] == $cur_data && ++$same_num_i < $num) {
$out[] = $cur_data;
}
}
}
}
return $out;
}
$out = get_duplicate_num_array($in, 2);
print_r($out);
/*
Array
(
[0] => 1
[1] => 20
[2] => 20
[3] => 37
[4] => 37
[5] => 45
[6] => 45
[7] => 38
[8] => 38
[9] => 22
[10] => 26
[11] => 28
)
*/
?>
1-2、例如:$in = [1, 20, 20 ,37, 20, 45, 38, 38, 20, 22, 26, 28, 45, 45, 37, 37];
$out = [1, 20, 20, 37, 45, 38, 38, 22, 26, 28, 45, 37];
// 相同的数组元素不进行合并,保持原来数组元素的先后顺序
<?php
$in = [1, 20, 20 ,37, 20, 45, 38, 38, 20, 22, 26, 28, 45, 45, 37, 37];
$out = [1, 20, 20, 37, 45, 38, 38, 22, 26, 28, 45, 37];
function get_duplicate_num_array($in, $num) {
$length = count($in);
for($i = 0; $i < $length - 1; $i++) {
$cur_data = $in[$i];
// 相同数组元素的重复次数的初值
$same_num_i = 0;
// 查询与当前数据值相同的其他数组元素值
for($j = $i + 1; $j < $length; $j++) {
if($in[$j] == $cur_data && ++$same_num_i >= $num) {
unset($in[$j]);
}
}
}
return $in;
}
$out = get_duplicate_num_array($in, 2);
print_r($out);
/*
Array
(
[0] => 1
[1] => 20
[2] => 20
[3] => 37
[5] => 45
[6] => 38
[7] => 38
[9] => 22
[10] => 26
[11] => 28
[12] => 45
[14] => 37
)
*/
?>