如何基于整数值将数组拆分为两个数组

Here is an example array I want to split:

(1428,217,1428)

How do I split it in 2 array like this?

(1428,1428)
(217)

I have tried following way but it's only return 1428 array.

$counts = array_count_values($array);
$filtered = array_filter($array, function ($value) use ($counts) {
    return $counts[$value] > 1;

});

One way to solve this for your example data is to sort the array and use array_shift to get the first element of the array and store that in an array.

$a = [1428,217,1428];
sort($a);
$b = [array_shift($a)];

print_r($a);
print_r($b);

Result

Array
(
    [0] => 1428
    [1] => 1428
)
Array
(
    [0] => 217
)

You can try this.

$array = array(1428,217,1428);
$array1 = array_slice($array, 0, 2);
$array2 = array_slice($array, 2, 3);
print_r($array1);
print_r($array2);

And the output will like this:-

Array
(
    [0] => 1428
    [1] => 217
)
Array
(
    [0] => 1428
)

In your case it will only return 1428 since array_count_values returns an array with values as keys and their frequency as array value therefore $counts will be equal to array('1428' => 2, '217' => 1);

If I understood your question well you should do something like this:

$array1 = [1428, 217, 1428];
$result = [];
foreach($array1 as $value){
  $result[$value][] = $value;  
}

This will not create an array for each different value but will create a new element for each unique value in $result. The final value of $result will be array('1428' => [1428, 1428], '217' => [217]) . Which can be easily manipulated as if they were 2 different arrays.

Let me know if this works for you, if not I will try to update my answer according to your specification.